BR102020019649A2 - aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo - Google Patents

aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo Download PDF

Info

Publication number
BR102020019649A2
BR102020019649A2 BR102020019649-9A BR102020019649A BR102020019649A2 BR 102020019649 A2 BR102020019649 A2 BR 102020019649A2 BR 102020019649 A BR102020019649 A BR 102020019649A BR 102020019649 A2 BR102020019649 A2 BR 102020019649A2
Authority
BR
Brazil
Prior art keywords
logical
logical processor
type
processor
thread
Prior art date
Application number
BR102020019649-9A
Other languages
English (en)
Inventor
Eugene Gorbatov
Efraim Rotem
Eliezer Weissmann
Julius Mandelblat
Ahmad Yasin
Nir Misgav
Rajshree Chabukswar
Russell Fenger
Monica GUPTA
Omer Barak
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Publication of BR102020019649A2 publication Critical patent/BR102020019649A2/pt

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5044Allocation 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 hardware capabilities
    • 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/505Allocation 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 the load
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

A presente invenção refere-se a um aparelho e a um método para agendar inteligentemente encadeamentos através de uma pluralidade de processadores lógicos. Por exemplo, uma modalidade de um processador compreende: uma pluralidade de processadores lógicos que incluem compreender um ou mais dentre um primeiro tipo de processador lógico e um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo; um agendador para agendar uma pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos; sendo que, se os dados de desempenho indicam que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, o agendador é para determinar a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de desempenho associados à execução do primeiro encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.

Description

APARELHO E MÉTODO PARA AGENDAR ADAPTATIVAMENTE O TRABALHO EM RECURSOS DE PROCESSAMENTO HETEROGÊNEO HISTÓRICO CAMPO DA INVENÇÃO
[0001] As modalidades da invenção referem-se, de modo geral, ao campo de processadores de computador. Mais particularmente, as modalidades se referem a um aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo.
DESCRIÇÃO DA TÉCNICA RELACIONADA
[0002] Sistemas de processamento heterogêneo atuais incluem uma mistura de núcleos “grandes” de alta potência e alto desempenho e núcleos "pequenos” de melhor eficiência energética. Algumas dessas arquiteturas heterogêneas também integram processadores de gráficos, processadores de sinal digital e outras formas de computar unidades no mesmo chip ou pacote.
BREVE DESCRIÇÃO DOS DESENHOS
[0003] Um melhor entendimento da presente invenção pode ser obtido a partir da seguinte descrição detalhada juntamente com os desenhos a seguir, nos quais:
[0004] As Figuras 1A e 1B são diagramas de blocos que ilustram um formato de instrução favorável de vetor genérico e modelos de instrução do mesmo de acordo com as modalidades da invenção;
[0005] As Figuras 2A a 2C são diagramas de bloco que ilustram um formato de instrução VEX exemplificativo de acordo com modalidades da invenção;
[0006] A Figura 3 é um diagrama de blocos de uma arquitetura de registro de acordo com uma modalidade da invenção;
[0007] A Figura 4A é um diagrama de blocos que ilustra uma pipeline de coleta, decodificação, retirada em ordem exemplificativa e uma pipeline de emissão/execução fora de ordem e renomeação de registro exemplificativa de acordo com as modalidades da invenção;
[0008] A Figura 4B é um diagrama de blocos que ilustra tanto uma modalidade exemplificativa de um núcleo de coleta, decodificação e retirada em ordem e um núcleo de arquitetura de emissão/execução fora de ordem e renomeação de registro exemplificativo a serem incluídos em um processador de acordo com modalidades da invenção;
[0009] A Figura 5A é um diagrama de blocos de um núcleo de processador único, junto com a conexão do mesmo a uma rede de interconexão em molde;
[0010] A Figura 5B ilustra uma vista expandida de parte do núcleo de processador na Figura 5A, de acordo com modalidades da invenção;
[0011] A Figura 6 é um diagrama de blocos de um processador de único núcleo e um processador múltiplos núcleos com controlador de memória integrada e gráficos de acordo com modalidades da invenção;
[0012] A Figura 7 é um diagrama de blocos de um sistema de acordo com uma modalidade da presente invenção.
[0013] A Figura 8 é um diagrama de blocos de um segundo sistema de acordo com uma modalidade da presente invenção.
[0014] A Figura 9 é um diagrama de blocos de um terceiro sistema de acordo com uma modalidade da presente invenção.
[0015] A Figura 10 é um diagrama de blocos de um quarto sistema em um chip (SoC) de acordo com uma modalidade da presente invenção.
[0016] A Figura 11 ilustra um diagrama de blocos que contrasta o uso de um conversor de instrução de software para converter instruções binárias em um conjunto de instruções de origem em instruções binárias em um conjunto de instruções alvo de acordo com modalidades da invenção.
[0017] A Figura 12 ilustra uma modalidade que compreende uma unidade-guia de hardware;
[0018] As Figuras 13A a 13C ilustram detalhes para uma modalidade de um circuito/lógica-guia;
[0019] As Figuras 14A a 14B ilustram diferentes montantes de potência de processador;
[0020] As Figuras 15A a 15C ilustram uma modalidade de um circuito/lógica de previsão que usa vetores de evento e pesos de previsão;
[0021] As Figuras 16A a 16B ilustram diferentes classes de traços/cargas de trabalho de instrução;
[0022] A Figura 17 ilustra uma modalidade de uma arquitetura na qual uma tabela global é usada para agendar execução em núcleos ou processadores lógicos; e
[0023] A Figura 18 ilustra um método de acordo com uma modalidade da invenção.
DESCRIÇÃO DETALHADA
[0024] Na descrição a seguir, para propósitos de explicação, diversos detalhes específicos são apresentados a fim de fornecer um entendimento completo das modalidades da invenção descritas abaixo. Será evidente, no entanto, para uma pessoa versada na técnica, que as modalidades da invenção podem ser praticadas sem parte desses detalhes específicos. Em outros exemplos, estruturas e dispositivos bem conhecidos são mostrados em forma de diagrama de blocos para evitar obscurecer os princípios subjacentes das modalidades da invenção.
Arquiteturas de Processador, Formatos de Instrução e Tipos de Dados Exemplificativos
[0025] Um conjunto de instruções inclui um ou mais formatos de instrução. Um determinado formato de instrução define vários campos (número de bits, localização de bits) para especificar, dentre outras coisas, a operação a ser realizada (opcode) e o operando (ou operandos) no qual essa operação deve ser realizada. Alguns formatos de instrução não estão em funcionamento apesar da definição de modelos de instrução (ou subformatos). Por exemplo, os modelos de instrução de um determinado formato de instrução podem ser definidos de modo a terem subconjuntos diferentes dos campos do formato de instrução (os campos incluídos estão tipicamente na mesma ordem, mas pelo menos alguns têm posições de bit diferentes, pois há menos campos incluídos) e/ou podem ser definidos de modo a terem um determinado campo interpretado de forma diferente. Desse modo, cada instrução de uma ISA é expressa com uso de um determinado formato de instrução (e, caso definida, em um determinado modelo dentre os modelos de instrução desse formato de instrução) e inclui campos para especificar a operação e os operandos. Por exemplo, uma instrução de ADD exemplificativa tem um opcode específico e um formato de instrução que inclui um campo de opcode para especificar tais campos de opcode e operando para selecionar operandos (fonte1/destino e fonte2); e uma ocorrência dessa instrução de ADD em um fluxo contínuo de instrução terá conteúdos específicos nos campos de operando que selecionam operandos específicos.
[0026] As modalidades da instrução (ou instruções) descritas no presente documento podem ser incorporadas em formatos diferentes. Adicionalmente, sistemas, arquiteturas e pipelines exemplificativos são detalhados abaixo. As modalidades da instrução (ou instruções) podem ser executadas em tais sistemas, arquiteturas e pipelines, mas não estão limitadas àqueles detalhados.
FORMATO DE INSTRUÇÃO FAVORÁVEL DE VETOR GENÉRICO
[0027] Um formato de instrução favorável de vetor é um formato de instrução que é adequado para as instruções de vetor (por exemplo, há determinados campos específicos para operações de vetor). Embora sejam descritas modalidades em que tanto as operações de vetor quanto escalares são suportadas através do formato de instrução favorável de vetor, as modalidades alternativas usam apenas operações de vetor no formato de instrução favorável de vetor.
[0028] As Figuras 1A e 1B são diagramas de blocos que ilustram um formato de instrução favorável de vetor genérico e modelos de instrução das mesmas de acordo com as modalidades da invenção; A Figura 1A é um diagrama de blocos que ilustra um formato de instrução favorável de vetor genérico e modelos de instrução de classe A do mesmo de acordo com modalidades da invenção; enquanto que a Figura 1B é um diagrama de blocos que ilustra o formato de instrução favorável de vetor genérico e modelos de instrução de classe B do mesmo de acordo com modalidades da invenção. Especificamente, um formato de instrução favorável de vetor genérico 100 para o qual são definidos modelos de instrução classe A e de classe B, dos quais ambos incluem modelo de instrução 105 sem acesso à memória e modelo de instrução 120 com acesso à memória. O termo genérico no contexto do formato de instrução favorável de vetor se refere ao formato de instrução que não é ligado a qualquer conjunto de instruções específico.
[0029] Serão descritas modalidades da invenção em que o formato de instrução favorável de vetor suporta o seguinte: um comprimento (ou tamanho) de operando de vetor de 64 bytes com largura (ou tamanhos) de elemento de dados de 32 bits (4 bytes) ou 64 bits (8 bytes) (e, desse modo, um vetor de 64 bytes consiste em 16 elementos de tamanho duplo de palavra ou, alternativamente, 8 elementos de tamanho quádruplo de palavra); um comprimento (ou tamanho) de operando de vetor de 64 bytes com larguras (ou tamanhos) de elemento de dados de 16 bits (2 bytes) ou 8 bits (1 byte); um comprimento (ou tamanhos) de operando de vetor de 32 bytes com larguras (ou tamanhos) de elemento de dados de 32 bits (4 bytes), 64 bits (8 bytes), 16 bits (2 bytes) ou 8 bits (1 byte); e um comprimento (ou tamanho) de operando de vetor de 16 bytes com larguras (ou tamanhos) de elemento de dados de 32 bits (4 bytes), 64 bits (8 bytes), 16 bits (2 bytes) ou 8 bits (1 byte); as modalidades alternativas podem suportar tamanhos de operando de vetor maiores, menores e/ou diferentes (por exemplo, operandos de vetor de 256 bytes) com larguras de elemento de dados maiores, menores ou diferentes (por exemplo, larguras de elemento de dados de 128 bits (16 bytes)).
[0030] Os modelos de instrução de classe A na Figura 1A incluem: 1) dentro dos modelos de instrução 105 sem acesso à memória é mostrado um modelo de instrução de operação do tipo de controle de arredondamento completo 110 sem acesso à memória e um modelo de instrução de operação do tipo de transformada de dados 115 sem acesso à memória; e 2) dentro dos modelos de instrução 120 com acesso à memória é mostrado um modelo de instrução temporário 125 com acesso à memória e um modelo de instrução não temporário 130 com acesso à memória. Os modelos de instrução de classe B na Figura 1B incluem: 1) dentro dos modelos de instrução 105 sem acesso à memória é mostrado um modelo de instrução de operação do tipo controle de arredondamento parcial de controle de máscara de gravação 112 sem acesso à memória e um modelo de instrução de operação do tipo vsize de controle de máscara de gravação 117 sem acesso à memória e 2) dentro dos modelos de instrução 120 com acesso à memória é mostrado um modelo de instrução de controle de máscara de gravação 127 com acesso à memória.
[0031] O formato de instrução favorável de vetor genérico 100 inclui os seguintes campos listados abaixo na ordem ilustrada nas Figuras 1A a 1B.
[0032] Campo de formato 140 – um valor específico (um valor de identificador de formato de instrução) nesse campo identifica-se unicamente o formato de instrução favorável de vetor, e, desse modo, as ocorrências de instruções no formato de instrução favorável de vetor em fluxos contínuos de instrução. Desse modo, esse campo é opcional no sentido de que não é necessário para um conjunto de instruções que tem apenas o formato de instrução favorável de vetor genérico.
[0033] Campo de operação-base 142 – seu conteúdo distingue operações-base diferentes.
[0034] Campo de índice de registro 144 – seu conteúdo, diretamente ou através de geração de endereço, especifica as localizações dos operandos de origem e destino, estejam os mesmos nos registros ou na memória. Esses incluem um número suficiente de bits para selecionar N registros a partir de um arquivo de registro de PxQ (por exemplo, 32x512, 16x128, 32x1024, 64x1024). Embora, em uma modalidade, N possa ser de até três origens e um registro de destino, modalidades alternativas podem suportar mais ou menos registros de fontes e destino (por exemplo, podem suportar até duas origens em que uma dentre essas origens também atua como o destino, podem suportar até três origens em que uma dentre essas origens também atua como o destino, podem suportar até duas origens e um destino).
[0035] Campo modificador 146 – seu conteúdo distingue ocorrências de instruções no formato de instrução de vetor genérico que especifica o acesso à memória daquelas que não o fazem; isto é, entre modelos de instrução 105 sem acesso à memória e modelos de instrução com acesso à memória 120. Operações com acesso à memória leem e/ou gravam para a hierarquia de memória (em alguns casos que especificam os endereços de origem e/ou destino com o uso valores nos registros), enquanto operações sem acesso à memória (por exemplo, a de origem e destinos são registros). Embora em uma modalidade esse campo também selecione entre três formas diferentes para realizar cálculos de endereço de memória, as modalidades alternativas podem suportar mais ou menos formas ou formas diferentes para realizar os cálculos de endereço de memória.
[0036] Campo de operação de aumento 150 – seu conteúdo distingue qual dentre uma variedade de operações diferentes deve ser realizada além daquela operaçãobase. Esse campo é específico de contexto. Em uma modalidade da invenção, esse campo é dividido em um campo de classe 168, um campo alfa 152 e um campo beta 154. O campo de operação de aumento 150 permite que grupos comuns de operações sejam realizados em uma instrução única em vez de 2, 3 ou 4 instruções.
[0037] Campo de escala 160 – seu conteúdo permite o escalonamento do conteúdo do campo de índice para a geração de endereço de memória (por exemplo, para geração de endereço que usa 2escala * índice + base).
[0038] Campo de Deslocamento 162A – seu conteúdo é usado como parte de geração de endereço de memória (por exemplo, para geração de endereço que usa 2escala * índice + base + deslocamento).
[0039] Campo de Fator de Deslocamento 162B (observa-se que a justaposição do campo de deslocamento 162A diretamente sobre o campo de fator de deslocamento 162B indica que um ou o outro está em uso) – seu conteúdo é usado como parte de geração de endereço; especifica um fator de deslocamento que deve ser escalonado pelo tamanho de um acesso à memória (N) – em que N é o número de bytes no acesso à memória (por exemplo, para a geração de endereço que usa 2escala * índice + base + deslocamento escalonado). Bits de ordem baixa redundantes são ignorados e, desse modo, o conteúdo do campo de fator de deslocamento é multiplicado pelo tamanho total de operandos de memória (N) a fim de gerar o deslocamento final a ser usado no cálculo de um endereço eficaz. O valor de N é determinado pelo hardware de processador no tempo de execução com base no campo de opcode completo 174 (descrito anteriormente no presente documento) e no campo de manipulação de dados 154C. O campo de deslocamento 162A e o campo de fator de deslocamento 162B são opcionais no sentido em que os mesmos não são usados para os modelos de instrução 105 sem acesso à memória e/ou modalidades diferentes podem implantar um ou nenhum dentre os dois.
[0040] Campo de largura de elemento de dados 164 – seu conteúdo distingue um dentre um número de larguras de elemento de dados a ser usado (em algumas modalidades para todas as instruções; em outras modalidades apenas para algumas das instruções). Esse campo é opcional no sentido em que não é necessário se apenas uma largura de elemento de dados for suportada e/ou larguras de elemento de dados forem suportadas com o uso de algum aspecto dos opcodes.
[0041] Campo de máscara de gravação 170 – seu conteúdo controla, em uma base por posição de elemento de dados, independentemente de a posição de elemento de dados no operando de vetor de destino refletir o resultado da operação-base e operação de aumento. Modelos de instrução de classe A suportam mascaramento de mescla e gravação, enquanto os modelos de instrução de classe B suportam tanto mascaramento de mescla e gravação quanto anulação e gravação. Durante a mesclagem, as máscaras de vetor permitem que qualquer conjunto de elementos no destino seja protegido contra atualizações durante a execução de qualquer operação (especificada pela operação-base e pela operação de aumento); em uma outra modalidade, preservar o valor anterior de cada elemento do destino em que o bit de máscara correspondente tem um 0. Por outro lado, durante a anulação, as máscaras de vetor permitem que qualquer conjunto de elementos no destino seja anulado durante a execução de qualquer operação (especificada pela operação-base e pela operação de aumento); em uma modalidade, um elemento do destino é configurado para 0 quando o bit de máscara correspondente tiver um valor de 0. Um subconjunto dessa funcionalidade é a habilidade de controlar o comprimento de vetor da operação que é realizada (isto é, a extensão dos elementos que são modificados, do primeiro ao último); no entanto, não é necessário que os elementos que são modificados sejam consecutivos. Desse modo, o campo de máscara de gravação 170 permite operações de vetor parciais, que inclui carregamentos, armazenamentos, aritmética, lógica, etc. Embora as modalidades da invenção sejam descritas, nas quais o conteúdo do campo de máscara de gravação 170 seleciona um dentre um número de registros de máscara de gravação que contêm a máscara de gravação a ser usada (e, desse modo, o conteúdo do campo de máscara de gravação 170 identifica indiretamente tal mascaramento a ser realizado), modalidades alternativas, em vez disso ou adicionais, permitem que o conteúdo do campo de gravação de máscara 170 especifique diretamente o mascaramento a ser realizado.
[0042] Campo imediato 172 – seu conteúdo permite a especificação de um imediato. Esse campo é opcional no sentido que não está presente em uma implantação do formato compatível com vetor genérico que não suporta imediato e não está presente em instruções que não usam um imediato.
[0043] Campo de classe 168 – seu conteúdo distingue entre classes diferentes de instruções. Com referência às Figuras 1A e 1B, os conteúdos desse campo selecionam entre instruções de classe A e classe B. Nas Figuras 1A e 1B, quadrados de cantos arredondados são usados para indicar que um valor específico está presente em um campo (por exemplo, classe A 168A e classe B 168B para campo de classe 168 respectivamente nas Figuras 1A e 1B).
Modelos de instrução de Classe A
[0044] No caso dos modelos de instrução 105 sem acesso à memória de classe A, o campo alfa 152 é interpretado como um campo de RS 152A, cujo conteúdo distingue qual dentre os tipos diferentes de operação de aumento devem ser realizados (por exemplo, arredondamento 152A.1 e transformada de dados 152A.2 são respectivamente especificados para modelos de instrução de operação do tipo arredondamento 110 sem acesso à memória e operação do tipo transformada de dados 115 sem acesso à memória), enquanto o campo beta 154 distingue qual dentre as operações do tipo específico deve ser realizada. Nos modelos de instrução 105 sem acesso à memória, o campo de escala 160, o campo de deslocamento 162A, e o campo de escala de deslocamento 162B não estão presentes.
[0045] Modelos de Instrução Sem Acesso à Memória – Operação do Tipo Controle de Arredondamento Completo
[0046] No modelo de instrução de operação do tipo de controle de arredondamento completo sem acesso à memória 110, o campo beta 154 é interpretado como um campo de controle de arredondamento 154A, cujo conteúdo (ou conteúdos) fornece arredondamento estático. Embora nas modalidades descritas da invenção o campo de controle de arredondamento 154A inclua um campo de supressão de todas as exceções de ponto de flutuação 156 e um campo de controle de operação de arredondamento 158, as modalidades alternativas podem suportar e podem codificar esses conceitos no mesmo campo ou apenas ter um ou outro dentre esses conceitos/campos (por exemplo, podem ter apenas o campo de controle de operação de arredondamento 158).
[0047] Campo de SAE 156 – seu conteúdo distingue a possibilidade ou de desativar ou não o relatório de evento de exceção; quando o conteúdo do campo de SAE 156 indicar que a supressão está ativada, uma determinada instrução não relata qualquer tipo de aviso de exceção de ponto de flutuação e não eleva qualquer manipulador de exceção de ponto de flutuação.
[0048] Campo de controle de operação de arredondamento 158 – seu conteúdo distingue qual dentre um grupo de operações de arredondamento realizar (por exemplo, Arredondar para cima, Arredondar para baixo, Arredondar para zero e Arredondar para o mais próximo). Desse modo, o campo de controle de operação de arredondamento 158 permite a alteração do modo de arredondamento em uma base por instrução. Em uma modalidade da invenção em que um processador inclui um registro de controle para especificar os modos de arredondamento, o conteúdo do campo de controle de operação de arredondamento 150 substitui tal valor de registro.
Modelos de instrução Sem Acesso à Memória – Operação do Tipo Transformada de Dados
[0049] No modelo de instrução de operação do tipo transformada de dados 115 sem acesso à memória, o campo beta 154 é interpretado como um campo de transformada de dados 154B, cujo conteúdo distingue qual dentre um número de transformadas de dados deve ser realizado (por exemplo, nenhuma transformada de dados, realização de swizzling, difusão).
[0050] No caso de um modelo de instrução com acesso à memória 120 de classe A, o campo alfa 152 é interpretado como um campo de dica de remoção 152B, cujo conteúdo distingue qual dentre as dicas de remoção devem ser usadas (na Figura 1A, temporária 152B.1 e não temporárias 152B.2 são especificadas respectivamente para o modelo de instrução temporário 125 com acesso à memória e o modelo de instrução não temporário 130 com acesso à memória), enquanto o campo beta 154 é interpretado como um campo de manipulação de dados 154C, cujo conteúdo distingue qual dentre um número de operações de manipulação de dados (também conhecidos como primitivos) deve ser realizado (por exemplo, nenhuma manipulação; difusão; conversão ascendente de uma de origem; e conversão descendente de um destino). Os modelos de instrução 120 com acesso à memória incluem o campo de escala 160, e, opcionalmente, o campo de deslocamento 162A ou o campo de escala de deslocamento 162B.
[0051] As instruções de memória de vetor realizam carregamentos de vetor a partir de e o vetor armazena na memória, com suporte de conversão. Como com instruções de vetor regulares, as instruções de memória de vetor transferem dados de/para a memória em uma maneira no sentido de elemento de dados, com os elementos que são realmente transferidos, é ditada pelos conteúdos da máscara de vetor que é selecionada como a máscara de gravação.
[0052] Modelos de instrução com acesso à memória – Temporário
[0053] Os dados temporais são dados propensos a serem reutilizados cedo o suficiente para se beneficiar da realização de cache. Isto é, entretanto, uma sugestão, e processadores diferentes podem implantar a mesma de maneiras diferentes, incluindo ignorar a sugestão inteiramente.
Modelos de Instrução Com Acesso à Memória – Não Temporal
[0054] Os dados não temporais são dados não propensos a serem reutilizados cedo o suficiente para se beneficiar da realização de cache no cache de 1º nível e devem receber prioridade para remoção. Isto é, entretanto, uma sugestão, e processadores diferentes podem implantar a mesma em maneiras diferentes, incluindo ignorar a sugestão inteiramente.
Modelos de Instrução de Classe B
[0055] No caso dos modelos de instrução de classe B, o campo alfa 152 é interpretado como um campo 152C de controle de máscara de gravação (Z), cujo conteúdo distingue a possibilidade de o mascaramento de gravação controlado pelo campo de máscara de gravação 170 ser uma mesclagem ou uma anulação.
[0056] No caso dos modelos de instrução 105 sem acesso à memória de classe B, parte do campo beta 154 é interpretada como um campo de RL 157A, cujo conteúdo distingue qual dentre os tipos de operação de aumento diferentes devem ser realizados (por exemplo, arredondamento 157A.1 e comprimento de vetor (VSIZE) 157A.2 são respectivamente especificadas para o modelo de instrução de operação do tipo controle de arredondamento parcial, controle de máscara de gravação sem acesso à memória e modelo de instrução de operação do tipo VSIZE de controle de máscara de gravação 117 sem acesso à memória), enquanto o restante d o campo beta 154 distingue qual dentre as operações do tipo específico deve ser realizada. Nos modelos de instrução 105 sem acesso à memória, o campo de escala 160, o campo de deslocamento 162A, e o campo de escala de deslocamento 162B não estão presentes.
[0057] No modelo de instrução de operação do tipo controle de arredondamento parcial de controle de máscara de gravação 110 sem acesso à memória, o restante do campo beta 154 é interpretado como um campo de operação de arredondamento 159A e o relatório de evento de exceção é desativado (uma determinada instrução não relata qualquer tipo de aviso de exceção de ponto de flutuação e não eleva qualquer manipulador de exceção de ponto de flutuação).
[0058] Campo de controle de operação de arredondamento 159A – apenas como campo de controle de operação de arredondamento 158, seu conteúdo distingue qual dentre um grupo de operações de arredondamento realizar (por exemplo, Arredondar para cima, Arredondar para baixo, Arredondar para zero e Arredondar para o mais próximo). Desse modo, o campo de controle de operação de arredondamento 159A permite a alteração do modo de arredondamento em uma base por instrução. Em uma modalidade da invenção em que um processador inclui um registro de controle para especificar os modos de arredondamento, o conteúdo do campo de controle de operação de arredondamento 150 substitui tal valor de registro.
[0059] Na operação do tipo VSIZE de controle de máscara de gravação 117 sem acesso à memória modelo de instrução, o restante d o campo beta 154 é interpretado como um campo de comprimento de vetor 159B, cujo conteúdo distingue qual dentre um número de comprimento de vetores de dados deve ser realizado (por exemplo, 128, 256 ou 512 bytes).
[0060] No caso de um modelo de instrução com acesso à memória 120 de classe B, parte do campo beta 154 é interpretada como um campo de difusão 157B, cujo conteúdo distingue a possibilidade ou não de a operação de manipulação de dados do tipo de difusão ser realizada, enquanto o restante do campo beta 154 é interpretado como o campo de comprimento de vetor 159B. Os modelos de instrução 120 com acesso à memória incluem o campo de escala 160, e, opcionalmente, o campo de deslocamento 162A ou o campo de escala de deslocamento 162B.
[0061] Com relação ao formato de instrução favorável de vetor genérico 100, um campo de opcode completo 174 é mostrado incluindo o campo de formato 140, o campo de operação-base 142, e o campo de largura de elemento de dados 164. Embora uma modalidade seja mostrada incluindo o campo de opcode completo 174 que inclui todos dentre esses campos, o campo de opcode completo 174 inclui menos que todos esses campos nas modalidades que não suportam todos esses campos. O campo de opcode completo 174 fornece o código de operação (opcode).
[0062] O campo de operação de aumento 150, o campo de largura de elemento de dados 164, e o campo de máscara de gravação 170 permite que esses recursos sejam especificados em uma base por instrução no formato de instrução favorável de vetor genérico.
[0063] A combinação de campo de máscara de gravação e campo de largura de elemento de dados criam instruções digitadas em que as mesmas permitem que a máscara seja aplicada com base em larguras de elemento de dados diferentes.
[0064] Os vários modelos de instrução constatados dentro da classe A e classe B são benéficos em situações diferentes. Em algumas modalidades da invenção, os processadores diferentes ou núcleos diferentes dentro de um processador podem suportar apenas classe A, apenas classe B ou ambas classes. Por exemplo, um núcleo fora de ordem de propósito geral de alto desempenho destinado para computação de propósito geral pode suportar apenas classe B, um núcleo destinado primariamente para computação de gráficos e/ou científica (completa) pode suportar apenas classe A, e um núcleo destinado para ambos pode suportar ambos (evidentemente, um núcleo que tem alguma mistura de modelos e instruções de ambas as classes, porém, nem todos os modelos e instruções de ambas as classes estão dentro do âmbito da invenção). Ademais, um processador único pode incluir múltiplos núcleos, em que todos suportam a mesma classe ou nos quais núcleos diferentes suportam classes diferentes. Por exemplo, em um processador com núcleos de gráficos e de propósito geral separados, em um dentre os núcleos de gráficos é destinado primariamente para computação gráfica e/ou científica pode suportar apenas classe A, enquanto um ou mais dentre os núcleos de propósito geral podem ser núcleos de propósito geral de alto desempenho com execução e renomeação de registro fora de ordem destinados para computação de propósito geral que suporta apenas classe B. Outro processador que não tem um núcleos gráfico separados, pode incluir mais um núcleo de propósito geral em ordem ou núcleos fora de ordem que suportam tanto a classe A quanto classe B. Evidentemente, os recursos de uma classe também podem ser implantados em outra classe nas modalidades diferentes da invenção. Programas gravados em uma linguagem de alto nível seriam colocados (por exemplo, compilados ou estaticamente compilados no tempo certo) em uma variedade de formas executáveis diferentes, que incluem: 1) uma forma que tem apenas instruções da classe (ou classes) suportada pelo processador-alvo para a execução; ou 2) uma forma que tem rotinas alternativas gravadas com o uso de combinações diferentes das instruções de todas as classes e que tem código de fluxo de controle que seleciona as rotinas para executar com base nas instruções suportadas pelo processador que executa atualmente o código.
Formato de Instrução VEX
[0065] A codificação VEX permite que instruções tenham mais de dois operandos, e permite que registros de vetor SIMD sejam mais longos que 28 bits. O uso de um prefixo VEX fornece sintaxe de três operandos (ou mais). Por exemplo, as instruções de dois operandos anteriores realizaram operações como A = A + B, que sobrescreve um operando de origem. O uso de um prefixo VEX possibilita que os operandos realizem operações não destrutivas como A = B + C.
[0066] A Figura 2A ilustra um formato de instrução AVX exemplificador incluindo um prefixo VEX 202, campo de opcode real 230, byte Mod R/M 240, byte SIB 250, campo de deslocamento 262 e IMM8 272. A Figura 2B ilustra quais campos da Figura 2A constituem um campo de opcode completo 274 e um campo de operação de base 241. A Figura 2C ilustra quais campos da Figura 2A constituem um campo de índice de registro 244.
[0067] O prefixo VEX (Bytes 0 a 2) 202 é codificado em uma forma de três bytes. O primeiro byte é o campo de formato 290 (VEX Byte 0, bits [7:0]), que contém um valor de byte C4 explícito (o valor exclusivo usado para distinguir o formato de instrução C4). O segundo e terceiro bytes (VEX Bytes 1 a 2) incluem vários campos de bit que fornecem capacidade específica. Especificamente, o campo REX 205 (VEX Byte 1, bits [7- 5]) consiste em um campo de bit VEX.R (VEX Byte 1, bit [7] – R), campo de bit VEX.X (VEX byte 1, bit [6] – X) e campo de bit VEX.B (VEX byte 1, bit[5] – B). Outros campos das instruções codificam os três bits inferiores dos índices de registro conforme é conhecido na técnica (rrr, xxx e bbb), de modo que Rrrr, Xxxx e Bbbb possam ser formados mediante a adição de VEX.R, VEX.X e VEX.B. O campo de mapa de opcode 215 (VEX byte 1, bits [4:0] – mmmmm) inclui conteúdo para codificar um byte de opcode anterior implicado. O campo W 264 (VEX byte 2, bit [7] – W) - é representado pela notação VEX.W, e fornece funções diferentes dependendo da instrução. A função de VEX.vvvv 220 (VEX Byte 2, bits [6:3]-vvvv) pode incluir os seguintes: 1) VEX.vvvv codifica o primeiro operando de registro de origem, especificado na forma invertida (complemento 1s) e é valido para instruções com 2 ou mais operandos de origem; 2) VEX.vvvv codifica o operando de registro de destino, especificado na forma de complemento 1s para certos deslocamentos de vetor; ou 3) VEX.vvvv não codifica qualquer operando, o campo é reservado e deveria conter 1111b. Se o campo de tamanho VEX.L 268 (VEX byte 2, bit [2]-L) = 0, isso indica o vetor de 28 bits; se VEX.L = 1, isso indica o vetor de 256 bits. O campo de codificação de prefixo 225 (VEX byte 2, bits [1:0]-pp) fornece bits adicionais para o campo de operação de base 241.
[0068] Campo de opcode real 230 (Bytes 3) também é conhecido como os bytes de opcode. Parte do opcode é especificada nesse campo.
[0069] O campo MOD R/M 240 (Byte 4) inclui campo MOD 242 (bits [7-6]), campo Reg 244 (bits [5-3]) e campo R/M 246 (bits [2-0]). A função do campo Reg 244 pode incluir os seguintes: codificar o operando de registro de destino ou um operando de registro de origem (o rrr de Rrrr), ou ser tratado como uma extensão de opcode e não usado para codificar qualquer operando de instrução. A função do campo R/M 246 pode incluir os seguintes: codificar o operando de instrução que menciona um endereço de memória ou codificar o operando de registro de destino ou um operando de registro de origem.
[0070] Escala, Índice, Base (SIB) - O conteúdo do campo de escala 250 (Byte 5) inclui SS252 (bits [7-6]), que é usado para a geração de endereço de memória. Os conteúdos de SIB.xxx 254 (bits [5-3]) e SIB.bbb 256 (bits [2-0]) foram mencionados anteriormente em relação aos índices de registro Xxxx e Bbbb.
[0071] O campo de deslocamento 262 e o campo imediato (IMM8) 272 contêm dados.
[0072] Arquitetura de Registro Exemplificativa
[0073] A Figura 3 é um diagrama de blocos de uma arquitetura de registro 300 de acordo com uma modalidade da invenção. Na modalidade ilustrada, há 32 registros de vetor 310 que têm amplitude de 512 bits; esses registros são chamados de zmm0 a zmm31. Os 256 bits de ordem inferior dos 6 registros zmm inferiores são sobrepostos em registros ymm0-15. Os 128 bits de ordem inferior dos 6 registros zmm inferiores (os 128 bits de ordem inferior dos registros ymm) são sobrepostos nos registros xmm0-15.
[0074] Registros de propósito geral 325 - na modalidade ilustrada, há dezesseis registros de propósito geral de 64 bits que são usados ao longo dos modos de endereçamento x86 existentes para endereçar operandos de memória. Esses registros são chamados pelos nomes RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP e R8 até R15.
[0075] Arquivo de registro de empilhamento de ponto de flutuação escalar (empilhamento x87) 345, no qual é expresso com ALIAS o arquivo de registro plano de número inteiro empacotado MMX 350 - na modalidade ilustrada, o empilhamento x87 é um empilhamento de oito elementos usado para realizar as operações de ponto de flutuação escalares em dados de ponto de flutuação de 32/64/80 bits com uso da extensão de conjunto de instruções x87, enquanto os registros MMX são usados para realizar operações em dados de número inteiro empacotado de 64 bits, assim como para reter os operandos para algumas operações realizadas entre os registros MMX e XMM.
[0076] Modalidades alternativas da invenção podem usar registros mais amplos ou mais curtos. Adicionalmente, as modalidades alternativas da invenção podem usar mais, menos ou diferentes arquivos de registro e registros.
Arquiteturas de Núcleo, Processadores e Arquiteturas de Computador Exemplificativas
[0077] Núcleos de processador podem ser implantados em formas diferentes, para propósitos diferentes, e em processadores diferentes. Por exemplo, implantações de tais núcleos podem incluir: 1) um núcleo em ordem de propósito geral destinado para computação de propósito geral; 2) um núcleo fora de ordem de propósito geral de alto desempenho destinado para computação de propósito geral; 3) um núcleo de propósito específico destinado primariamente para computação gráfica e/ou científica (completa). Implantações de processadores diferentes podem incluir: 1) uma CPU que inclui um ou mais núcleos em ordem de propósito geral destinado para computação de propósito geral e/ou um ou mais núcleos fora de ordem de propósito geral destinados para computação de propósito geral; e 2) um coprocessador que inclui um ou mais núcleos de propósito especiais destinados primariamente para gráficos e/ou científicos (completo). Tais processadores diferentes resultam em arquiteturas de sistema de computador diferentes, que podem incluir: 1) o coprocessador em um chip separado do CPU; 2) o coprocessador em um molde separado no mesmo pacote que uma CPU; 3) o coprocessador no mesmo molde como uma CPU (em tal caso, tal coprocessador é, algumas vezes, denominado como lógica de propósito específico, tal como lógica gráfica e/ou científica (completa) integrada, ou como núcleos de propósito específico); e 4) um sistema em um chip que pode incluir no molde a CPU descrita (algumas vezes chamada de núcleo (ou núcleos) de aplicativo ou processador (ou processadores) de aplicativo), o coprocessador descrito acima e funcionalidade adicional. As arquiteturas de núcleo exemplificativas são descritas a seguir, seguidas pelas descrições de processadores e arquiteturas de computador exemplificativas. Circuitos (unidades) que compreendem núcleos, processadores exemplificativos, etc., são detalhados no presente documento.
Arquiteturas de Núcleo Exemplificativas
[0078] A Figura 4A é um diagrama de blocos que ilustra tanto uma pipeline em ordem exemplificativa quanto uma pipeline de emissão/execução fora de ordem e renomeação de registro exemplificativa fora de ordem de acordo com modalidades da invenção. A Figura 4B é um diagrama de blocos que ilustra tanto uma modalidade exemplificativa de um núcleo de arquitetura em ordem quanto um núcleo de arquitetura de emissão/execução fora de ordem e renomeação de registro exemplificativa fora de ordem a serem incluídos em um processador de acordo com modalidades da invenção. As caixas de linhas sólidas nas Figuras 4A a 4B ilustram a pipeline em ordem e o núcleo em ordem, enquanto a adição opcional das caixas de linhas tracejadas ilustra a renomeação de registro, pipeline e núcleo de emissão/execução fora de ordem. Dado que o aspecto em ordem é um subconjunto do aspecto fora de ordem, o aspecto fora de ordem será descrito.
[0079] Na Figura 4A, uma pipeline de processador 400 inclui um estágio de coleta 402, um estágio de decodificação de comprimento 404, um estágio de decodificação 406, um estágio de alocação 408, um estágio de renomeação 410, um estágio de agendamento (também conhecido como uma expedição ou emissão) 412, um estágio de leitura de registro/leitura de memória 414, um estágio de execução 416, um estágio de gravação novamente/gravação de memória 418, um estágio de manipulação de exceção 422 e um estágio de confirmação 424.
[0080] A Figura 4B mostra o núcleo de processador 490 que inclui uma unidade de front-end 430 acoplada a uma unidade de mecanismo de execução 450 e ambas são acopladas a uma unidade de memória 470. O núcleo 490 pode ser um núcleo de computação de conjunto de instruções reduzido (RISC), um núcleo de computação de conjunto de instruções complexo (CISC), um núcleo de instrução muito longo (VLIW) ou um tipo de núcleo híbrido ou alternativo. Ainda como outra opção, o núcleo 490 pode ser um núcleo de finalidade especial como, por exemplo, um núcleo de rede ou comunicação, mecanismo de compressão, núcleo de coprocessador, núcleo de unidade de processamento de gráficos de computação com finalidade geral (GPGPU), núcleo de gráficos ou similares.
[0081] A unidade de front-end 430 inclui uma unidade de previsão de ramificação 432 acoplada a uma unidade de cache de instrução 434 que é acoplada a um armazenamento temporário de instrução de tradução à parte (TLB) 436 que é acoplada a uma unidade de coleta de instrução 438 que é acoplada a uma unidade de decodificação 440. A unidade de decodificação 440 (ou decodificador) pode decodificar instruções e gerar uma saída e uma ou mais micro-operações, pontos de inserção de microcódigo, macroinstruções, outras instruções ou outros sinais de controle que são decodificados ou que refletem de outra forma ou são derivados das instruções originais. A unidade de decodificação 440 pode ser implantada com uso de vários mecanismos diferentes. Os exemplos de mecanismos adequados incluem, mas não se limitam a tabelas de pesquisa, implantações de hardware, arranjos lógicos programáveis (PLAs), memórias somente de leitura de microcódigo (ROMs), etc. Em uma modalidade, o núcleo 490 inclui um microcódigo ROM ou outro meio que armazena microcódigo para determinas macroinstruções (por exemplo, na unidade de decodificação 440 ou dentro da unidade de front-end 430). A unidade de decodificação 440 é acoplada a uma unidade de renomeação/alocação 452 na unidade de mecanismo de execução 450.
[0082] A unidade de mecanismo de execução 450 inclui a unidade de renomeação/alocação 452 acoplada a uma unidade de retirada 454 e um conjunto de uma ou mais unidades de agendador 56. A unidade de agendador (ou unidades de agendador) 456 representa qualquer número de agendadores diferentes, que inclui estações de reserva, janela de instrução central, etc. A unidade de agendador (ou unidades de agendador) 456 é acoplada à unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458. Cada uma das unidades de arquivo (ou arquivos) de registro físicas 458 representa um ou mais arquivos de registro físicos, em que aqueles diferentes armazenam um ou mais tipos de dados diferentes, como número inteiro escalar, ponto de flutuação escalar, número inteiro de empacotamento, ponto de flutuação empacotado, número inteiro de vetor, ponto de flutuação de vetor, situação (por exemplo, um apontador de instrução que é o endereço da próxima instrução a ser executada), etc. Em uma modalidade, a unidade de arquivo (ou arquivos) de registro física 458 compreende uma unidade de registros de vetor e uma unidade de registros escalar. Essas unidades de registro podem fornecer registros de vetor arquitetônico, registros de máscara de vetor e registros para fins gerais. A unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458 é sobreposta pela unidade de desativação 454 para ilustrar várias maneiras nas quais a renomeação de registro e a execução fora de ordem podem ser implantadas (por exemplo, com uso de um armazenamento temporário de reordenamento (ou armazenamentos temporários de reordenamento) e um arquivo de registro de desativação (ou arquivos de registro de desativação); com uso de um arquivo futuro (ou arquivos futuros), um armazenamento temporário de histórico (ou armazenamentos temporários de históricos) e um arquivo de registro de desativação (ou arquivos de registro de desativação); com uso de mapas de registro e um grupamento de registros; etc.). A unidade de desativação 454 e a unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458 são acopladas ao agrupamento de execução (ou agrupamentos de execução) 460. O agrupamento de execução (ou agrupamentos de execução) 460 inclui um conjunto de uma ou mais unidades de execução 462 e um conjunto de uma ou mais unidades de acesso à memória 464. As unidades de execução 462 podem realizar várias operações (por exemplo, turnos, adição, subtração, multiplicação) e em vários tipos de dados (por exemplo, ponto de flutuação escalar, número inteiro de empacotamento, ponto de flutuação empacotado, número inteiro de vetor, ponto de flutuação de vetor). Enquanto algumas modalidades podem incluir várias unidades de execução dedicadas a funções ou conjuntos de funções específicas, outras modalidades podem incluir apenas uma unidade de execução ou múltiplas unidades de execução que realizam todas as funções. A unidade de agendador (ou unidades de agendador) 456, unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458, e agrupamento de execução (ou agrupamentos de execução) 460 são mostrados como sendo, possivelmente, plurais em determinadas modalidades criadas separadas de pipelines para determinados tipos de dados/operações (por exemplo, uma pipeline de número inteiro escalar, um ponto de flutuação escalar/número inteiro compactado/ponto de flutuação compactado/número inteiro de vetor/pipeline de ponto de flutuação de vetor, e/ou uma pipeline com acesso à memória em que cada um tem sua própria unidade de agendador, unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos), e/ou agrupamento de execução – e no caso de uma pipeline com acesso à memória separada, determinadas modalidades são implantadas, nas quais apenas o agrupamento de execução dessa pipeline tem a unidade com acesso à memória (ou unidades com acesso à memória) 464). Também deve ser entendido que onde as pipelines separadas são usadas, uma ou mais dessas pipelines podem ser de emissão/execução fora de ordem e o resto em ordem.
[0083] O conjunto de unidades de acesso à memória 464 é acoplado à unidade de memória 470 que inclui uma unidade de TLB de dados 472 acoplada a uma unidade de cache de dados 474 acoplada a uma unidade de cache 476 de nível 2 (L2). Em uma modalidade exemplificativa, as unidades de acesso à memória 464 podem incluir uma unidade de carga, uma unidade de endereço de armazenamento e uma unidade de dados de armazenamento, em que cada uma é acoplada à unidade de TLB de dados 472 na unidade de memória 470. A unidade de cache de instrução 434 é acoplada adicionalmente a uma unidade de cache 476 de nível 2 (L2) na unidade de memória 470. A unidade de cache de L2 476 é acoplada a um ou mais outros níveis de cache e, eventualmente, a uma memória principal.
[0084] A título de exemplo, a arquitetura de núcleo de emissão/execução fora de ordem e de renomeação de registro exemplificativa fora de ordem pode implantar a pipeline 400 conforme segue: 1) a coleta de instrução 438 realiza a coleta e os estágios de decodificação de comprimento 402 e 404; 2) a unidade de decodificação 440 realiza o estágio de decodificação 406; 3) a unidade de renomeação/alocação 452 realiza o estágio de alocação 408 e o estágio de renomeação 410; 4) a unidade de agendamento (ou unidades de agendamento) 456 realiza o estágio de agendamento 412; 5) a unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458 e a unidade de memória 470 realizam o estágio de leitura de registro/leitura de memória 414; o agrupamento de execução 460 realiza o estágio de execução 416; 6) a unidade de memória 470 e a unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458 realizam o estágio reintegração/gravação em memória 418; 7) várias unidades podem ser envolvidas no estágio de manuseio de exceção 422; e 8) a unidade de desativação 454 e a unidade de arquivo de registro físico (ou unidades de arquivos de registro físicos) 458 realizam o estágio de confirmação 424.
[0085] O núcleo 490 pode suportar um ou mais conjuntos de instruções (por exemplo, o conjunto de instruções x86 (com algumas extensões que foram adicionadas a novas versões); o conjunto de instruções de MIPS de Tecnologias MIPS de Sunnyvale, CA; o conjunto de instruções (com extensões adicionais opcionais como NEON) de ARM Holdings de Sunnyvale, CA), incluindo a instrução descrita (ou instruções descritas) no presente documento. Em uma modalidade, o núcleo 490 inclui lógica para suportar uma extensão de conjunto de instruções de dados compactados (por exemplo, AVX1, AVX2), permitindo, dessa forma, que as operações usadas por vários aplicativos de multimídia sejam realizadas com uso de dados compactados.
[0086] Deve-se compreender que o núcleo pode suportar múltiplos encadeamentos (executar dois ou mais conjuntos paralelos de operações ou encadeamentos) e pode fazer isso de várias maneiras incluindo múltiplos encadeamentos segmentados por tempo, múltiplos encadeamentos simultâneos (em que um único núcleo físico fornece um núcleo lógico para cada um dentre os encadeamentos que o núcleo físico está múltiplos encadeamentos simultaneamente) ou uma combinação dos mesmos (por exemplo, coleta e decodificação segmentada por tempo e múltiplos encadeamentos simultâneos, doravante, como na tecnologia Intel® Hyperthreading).
[0087] Embora a renomeação de registro seja descrita no contexto de execução fora de ordem, deve-se compreender que a renomeação de registro pode ser usada em uma arquitetura em ordem. Embora a modalidade ilustrada do processador também inclua unidades de cache de instrução e dados separadas 434/474 e uma unidade de cache de L2 compartilhado 476, as modalidades alternativas podem ter um cache interno único tanto para instruções quanto para dados, tais como, por exemplo, um cache interno de Nível 1 (L1) ou múltiplos níveis de cache interno. Em algumas modalidades, o sistema pode incluir uma combinação de um cache interno e um cache externo que é externo ao núcleo e/ou ao processador. Alternativamente, todo o cache pode ser externo ao núcleo e/ou ao processador.
Arquitetura de Núcleo em Ordem Exemplificativa Específica
[0088] As Figuras 5A a 12B ilustram um diagrama de blocos de uma arquitetura de núcleo em ordem exemplificativa mais específica, cujo núcleo pode ser um dentre vários blocos lógicos (incluindo outros núcleos do mesmo tipo e/ou de tipos diferentes) em um chip. Os blocos lógicos se comunicam através de uma rede de interconexão de largura de banda alta (por exemplo, uma rede de anel) com alguma lógica de função fixa, interfaces de I/O de memória e outra lógica de I/O necessária, dependendo da aplicação.
[0089] A Figura 5A é um diagrama de blocos de um núcleo de processador único, junto com sua conexão com a rede de interconexão em molde 502 e com seu subconjunto local do cache de Nível 2 (L2) 504, de acordo com modalidades da invenção. Em uma modalidade, um decodificador de instrução 500 suporta o conjunto de instruções x86 com uma extensão de conjunto de instruções de dados empacotados. Um cache de L1 506 permite acessos de baixa latência à memória de cache nas unidades escalares e de vetor. Embora em uma modalidade (para simplificar o projeto), uma unidade escalar 508 e uma unidade de vetor 510 usam conjuntos de registros separados (respectivamente, registros escalares 512 e registros de vetor 514) e dados transferidos entre as mesmas são gravados na memória e, então, relidos para um cache de nível 1 (L1) 506, as modalidades alternativas da invenção podem usar uma abordagem diferente (por exemplo, usar um conjunto de registros único ou incluir uma trajetória de comunicação que permite que dados sejam transferidos entre os dois arquivos de registro sem serem gravados ou relidos).
[0090] O subconjunto local do cache de L2 504 é parte de um cache de L2 global que é divido em subconjuntos locais separados, um por núcleo de processador. Cada núcleo de processador tem uma trajetória de acesso direto ao seu próprio subconjunto local do cache de L2 504. Dados lidos por um núcleo de processador são armazenados em seu subconjunto de cache de L2 504 e podem ser acessados rapidamente, em paralelo com outros núcleos de processador que seus próprios subconjuntos de cache de L2 locais. Dados gravados por um núcleo de processador são armazenados em seu próprio subconjunto de cache de L2 504 e é descartado de outros subconjuntos, se necessário. A rede em anel garante a coerência para dados compartilhados. A rede em anel é bidirecional para permitir que o agente de tais núcleos de processador, caches de L2 e outros blocos lógicos se comuniquem entre si dentro do chip. Cada trajetória de dados em anel tem 1024 bits de amplitude por direção em algumas modalidades.
[0091] A Figura 5B ilustra uma vista expandida de parte do núcleo de processador na Figura 5A, de acordo com modalidades da invenção; A Figura 5B inclui uma parte de cache de dados de L1 506A do cache de L1 504, bem como mais detalhes sobre a unidade de vetor 510 e os registros de vetor 514. Especificamente, a unidade de vetor 510 é uma unidade de processamento vetor de amplitude 6 (VPU) (consultar a ALU de amplitude 16 528), que executa uma ou mais dentre as instruções de número inteiro, flutuação de precisão única e precisão dupla. A VPU suporta realizar swizzle das entradas de registro com unidade de swizzle 520, conversão numérica com unidades de conversão numérica 522A a 522B, e replicação com unidade de replicação 524 na entrada de memória.
[0092] \Processador com controlador de memória e gráficos integrados
[0093] A Figura 6 é um diagrama de blocos de um processador 600 que pode ter mais de um núcleo, pode ter um controlador de memória integrado e pode ter gráficos integrados, de acordo com as modalidades da invenção. As caixas sólidas demarcadas na Figura 6 ilustram um processador 600 com um único núcleo 602A, um agente de sistema 610, um conjunto de uma ou mais unidades de controlador de barramento 616, enquanto a adição opcional das caixas em linha tracejada ilustra um processador alternativo 600 com múltiplos núcleos 602A a 202N, um conjunto de uma ou mais unidade de controlador de memória integrada (unidades de controladores de memória integrada) 614 na unidade de agente de sistema 610 e lógica de finalidade especial 608.
[0094] Dessa forma, as implantações diferentes do processador 600 podem incluir: 1) uma CPU em que a lógica para fins específicos 608 são gráficos integrados e/ou lógica científica (produtividade) (que pode incluir um ou mais núcleos) e sendo que os núcleos 602A-N são um ou mais núcleos para fins gerais (por exemplo, núcleos em ordem para fins gerais, núcleos fora de ordem para fins gerais, uma combinação dos dois); 2) um coprocessador com os núcleos 602A-N que são um grande número de núcleos de fins específicos projetados principalmente para gráficos e/ou lógica científica (produtividade); e 3) um coprocessador com os núcleos 602A-N que são um grande número de núcleos em ordem para fins gerais. Dessa forma, o processador 600 pode ser um processador de finalidade geral, coprocessador ou processador de finalidade especial como, por exemplo, um processador de rede ou comunicação, um mecanismo compressão, um processador de gráficos, GPGPU (unidade de processamento de gráficos de finalidade geral), um coprocessador de núcleo de alto rendimento integrado (MIC) (incluindo 30 ou mais núcleos), processador embutido ou similar. O processador pode ser implantado em um ou mais chips. O processador de aplicativo 600 pode ser uma parte de e/ou pode ser implantado em um ou mais substratos que usam qualquer diversidade de tecnologias de processo, tais como, por exemplo, BiCMOS, CMOS ou NMOS.
[0095] A hierarquia de memória inclui um ou mais níveis de cache dentro dos núcleos 604A a 604N, um conjunto ou uma ou mais unidades de cache compartilhado 606 e memória externa (não mostrada) acoplada ao conjunto de unidades controladoras de memória integrada 614. O conjunto de unidades de cache compartilhado 606 pode incluir um ou mais caches de nível médio, tais como o nível 2 (L2), o nível 3 (L3), o nível 4 (L4) ou outros níveis de cache, um cache de último nível (LLC) e/ou combinações dos mesmos. Embora em uma modalidade uma unidade de interconexão com base em anel 612 interconecta a lógica de gráficos integrados 608, o conjunto de unidades de cache compartilhado 606, e a unidade de agente de sistema 610/unidade de controlador de memória integrada (unidades de controlador de memória integrada) 614, as modalidades alternativas podem usar qualquer número de técnicas bem conhecidas para interconectar tais unidades. Em uma modalidade, a coerência é mantida entre uma ou mais unidades de cache 606 e núcleos 602A a 602N.
[0096] Em algumas modalidades, um ou mais dentre os núcleos 602A a 602N tem capacidade para realizar múltiplos encadeamentos. O agente de sistema 610 inclui aqueles componentes que coordenam e operam os núcleos 602A a 502N. A unidade de agente de sistema 610 pode incluir, por exemplo, uma unidade de controle de potência (PCU) e uma unidade exibição. A PCU pode ser ou incluir a lógica e os componentes necessários para regular o estado de potência dos núcleos 602A a 602N e a lógica de gráficos integrada 608. A unidade exibição tem como objetivo acionar um ou mais monitores conectados externamente.
[0097] Os núcleos 602A a 602A podem ser homogêneos ou heterogêneos em termos de conjunto de instruções de arquitetura, isto é, dois ou mais dentre os núcleos 202A a 202N podem ter capacidade para executar o mesmo conjunto de instruções, enquanto outros podem ter capacidade para executar apenas um subconjunto desse conjunto de instruções ou de um conjunto de instruções diferente.
Arquiteturas de Computador Exemplificativas
[0098] As Figuras 7 a 10 são diagramas de blocos de arquiteturas de computador exemplificativas. Outros modelos e configurações de sistema conhecidos nas técnicas para computadores do tipo laptop, computadores do tipo desktops, PCs portáteis, assistentes pessoais digitais, estações de trabalho de engenharia, servidores, dispositivos de rede, concentradores de rede, comutadores, processadores embutidos, processadores de sinal digital (DSPs), dispositivos de gráficos, dispositivos de vídeo game, decodificadores de sinais, microcontroladores, telefones celulares, reprodutores de mídia transportáveis, dispositivos portáteis e vários outros dispositivos eletrônicos também são adequados. Em geral, uma grande variedade de sistemas ou dispositivos eletrônicos com a capacidade para incorporar um processador e/ou outra lógica de execução, conforme revelado no presente documento, são, de modo geral, adequadas.
[0099] Referindo-se agora à Figura 7, um diagrama de blocos de um sistema 700 é mostrado de acordo com uma modalidade da presente invenção. O sistema 700 pode incluir um ou mais processadores 710, 715, que são acoplados a um concentrador de controlador 720. Em uma modalidade, o concentrador de controlador 720 inclui um concentrador de controlador de memória gráfica (GMCH) 790 e um Concentrador de Entrada/Saída (IOH) 750 (que pode estar em chips separados); o GMCH 790 inclui controladores de memória e gráficos para os quais são memória acoplada 740 e um coprocessador 745; o IOH 750 acopla os dispositivos de entrada/saída (I/O) 760 ao GMCH 790. Alternativamente, um ou ambos os controladores de memória e gráficos estão integrados dentro do processador (conforme descrito no presente documento), a memória 740 e o coprocessador 745 são acoplados diretamente ao processador 710 e ao concentrador de controlador 720 em um único chip com o IOH 750.
[00100] A natureza opcional de processadores adicionais 715 é representada na Figura 7 com linhas cortadas. Cada processador 710, 715 pode incluir um ou mais dos núcleos de processamento descritos no presente documento e podem ser alguma versão do processador 600.
[00101] A memória 740 pode ser, por exemplo, memória de acesso aleatório dinâmica (DRAM), memória de mudança de fase (PCM) ou uma combinação das duas. Para pelo menos uma modalidade, o concentrador de controlador 720 se comunica com o processador (ou processadores) 710, 715 através de um barramento multiponto, como um barramento frontal (FSB), interface ponto a ponto ou conexão semelhante 795.
[00102] Em uma modalidade, o coprocessador 745 é um processador de finalidade especial como, por exemplo, um processador de MIC de alto rendimento, um processador de rede ou comunicação, compressão de mecanismo, processador de gráficos, GPGPU, processador embutido ou similar. Em uma modalidade, o concentrador de controlador 720 pode incluir um acelerador de gráficos integrado.
[00103] Pode haver várias diferenças entre os recursos físicos 710, 7155 em termos de um espectro de métrica de mérito que inclui características arquitetônicas, microarquitetônicas, térmicas, de consumo de potência e similares.
[00104] Em uma modalidade, o processador 710 executa instruções que controlam operações de processamento de dados de um tipo geral. As instruções de coprocessador podem estar integradas nas instruções. O processador 710 reconhece essas instruções de coprocessador como sendo de um tipo que poderia ser executado pelo coprocessador 745 anexado. Consequentemente, o processador 710 emite essas instruções de coprocessador (ou sinais de controle que representam instruções de coprocessador) em um barramento de coprocessador ou outra interconexão, para o coprocessador 745. O coprocessador (ou coprocessadores) 745 aceita e executa as instruções de coprocessador recebidas.
[00105] Referindo-se agora à Figura 8, um diagrama de blocos de um primeiro sistema exemplificativo mais específico 800 é mostrado de acordo com uma modalidade da presente invenção. Conforme mostrado na Figura 8, o sistema de multiprocessador 800 é um sistema de interconexão ponto a ponto e inclui um primeiro processador 870 e um segundo processador 880 acoplados através de uma interconexão ponto a ponto 850. Cada um dos processadores 870 e 880 pode ser alguma versão do processador 600. Em uma modalidade da invenção, os processadores 870 e 880 são, respectivamente, processadores 710 e 715, enquanto o coprocessador 838 é o coprocessador 745. Em outra modalidade, os processadores 870 e 880 são, respectivamente, o processador 710 e o coprocessador 745.
[00106] Os processadores 870 e 880 são mostrados com as unidades de controlador de memória integrada (IMC) 872 e 882, respectivamente. O processador 870 também inclui como parte de suas unidades de controlador de barramento as interfaces ponto a ponto (P-P) 876 e 878; de forma semelhante, o segundo processador 880 inclui interfaces P-P 886 e 888. Os processadores 870, 880 podem trocar informações através de uma interface ponto a ponto (P-P) 850 com uso de circuitos de interface P-P 878, 888. Conforme mostrado na Figura 8, os MCHs 872 e 882 acoplam os processadores às respectivas memórias, a saber, uma memória 832 e uma memória 834, que podem ser porções de memória de sistema (por exemplo, DRAM) fixadas localmente aos respectivos processadores.
[00107] Os processadores 870, 880 podem trocar, cada um, informações com um conjunto de chips 890 através de interfaces P-P individuais 852, 854 com uso de circuitos de interface ponto a ponto 876, 894, 886, 898. O conjunto de chips 890 pode trocar informações, opcionalmente, com o coprocessador 838 através de uma interface de alto desempenho 892. Em uma modalidade, o coprocessador 838 é um processador de finalidade especial como, por exemplo, um processador de MIC de alto rendimento, um processador de rede ou comunicação, compressão de mecanismo, processador de gráficos, GPGPU, processador embutido ou similar.
[00108] Um cache compartilhado (não mostrado) pode ser incluído no processador ou na parte de fora de ambos os processadores, ainda conectado com os processadores por meio de interconexão P a P, de modo que qualquer uma ou ambas as informações de cache local dos processadores possam ser armazenados no cache compartilhado se um processador for colocado em um modo de baixa potência.
[00109] O conjunto de chips 890 pode ser acoplado a um primeiro barramento 816 através de uma interface 896. Em uma modalidade, o primeiro barramento 816 pode ser um barramento de Interconexão de Componente Periférico (PCI) ou um barramento como um barramento expresso de PCI ou outro barramento de interconexão de I/O, embora o escopo da presente invenção não seja limitado ao mesmo.
[00110] Conforme mostrado na Figura 8, vários dispositivos I/O 814 podem ser acoplados ao primeiro barramento 816, juntamente com uma ponte de barramento 818 que acopla o primeiro barramento 416 a um segundo barramento 820. Em uma modalidade, um ou mais processador adicional (ou processadores adicionais) 815, como coprocessadores, processadores de MIC de alto rendimento, GPGPUs, aceleradores (como, por exemplo, aceleradores de gráficos ou unidades de processamento de sinal digital (DSP)), arranjos de porta de campo programável ou qualquer outro processador é acoplado ao primeiro barramento 816. Vários dispositivos podem ser acoplados ao segundo barramento 820 que inclui, por exemplo, um teclado/mouse 822, dispositivos de comunicação 827 e a unidade de armazenamento de dados 828 como uma unidade e disco magnético ou outro dispositivo de armazenamento em massa que pode incluir o código 830, em uma modalidade. Adicionalmente, uma I/O de áudio 824 pode ser acoplada ao segundo barramento 816. Nota-se que outras arquiteturas são possíveis. Por exemplo, ao invés da arquitetura ponto a ponto da Figura 8, um sistema pode implantar um barramento de múltiplos pontos ou outra arquitetura.
[00111] Referindo-se agora à Figura 9, um diagrama de blocos de um segundo sistema exemplificativo mais específico 900 é mostrado de acordo com uma modalidade da presente invenção. Os elementos iguais nas Figuras 8 e 9 apresentam números de referência iguais e determinados aspectos da Figura 8 foram omitidos da Figura 5 a fim de evitar obscurecer outros aspectos da Figura 9.
[00112] A Figura 9 ilustra que os processadores 870, 880 podem incluir memória integrada e lógica de controle de I/O (“CL”) 972 e 982, respectivamente. Dessa forma, a CL 972, 982 inclui unidades de controlador de memória integrada e inclui lógica de controle de I/O. A Figura 9 ilustra que não apenas as memórias 832, 834 são acopladas à CL 872, 882, mas que os dispositivos de I/O 914 também são acoplados à lógica de controle 872, 882. Os dispositivos de I/O herdados 915 são acoplados ao conjunto de chips 890.
[00113] Referindo-se agora à Figura 10, um diagrama de blocos de um SoC 1000 é mostrado de acordo com uma modalidade da presente invenção. Os elementos semelhantes na Figura 6 apresentam referências numéricas iguais. Também, as caixas de linhas pontilhadas são recursos opcionais em SoCs mais avançados. Na Figura 10, uma unidade de interconexão (unidades de interconexão) 1002 é acoplada a: um processador de aplicativo 1010 que inclui um conjunto de um ou mais núcleos 102A a 102N, unidade de cache 604A a 604N e unidade de cache compartilhado (unidades de cache compartilhados) 606; uma unidade de agente de sistema 610; uma unidade de controlador de barramento (unidades de controlador de barramento) 616; uma unidade de controlador de memória integrada (unidades de controladores de memória integrada) 614; um conjunto ou um ou mais coprocessadores 1020 que podem incluir lógica de gráficos integrada, um processador de imagem, um processador de áudio e um processador de vídeo, uma unidade de memória de acesso aleatório estática (SRAM) 1030; um unidade de acesso à memória direto (DMA) 1032 e uma unidade de exibição 1040 para acoplar a um ou mais visores externos. Em uma modalidade, o coprocessador (ou coprocessadores) 1020 inclui um processador de finalidade especial como, por exemplo, um processador de rede ou comunicação, compressão de mecanismo, GPGPU, um processador de MIC de alto rendimento, um processador embutido ou similar.
[00114] As modalidades dos mecanismos revelados no presente documento podem ser implantadas em hardware, software, firmware, ou em uma combinação dessas abordagens de implantação. As modalidades da invenção podem ser implantadas como programas de computador ou código de programa em sistemas programáveis que compreendem pelo menos um processador, um sistema de armazenamento (que inclui elementos de memória e/ou armazenamento voláteis e não voláteis), pelo menos um dispositivo de entrada, e pelo menos um dispositivo de saída.
[00115] O código de programa, como o código 830 ilustrado na Figura 8, pode ser aplicado a instruções de entrada a fim de realizar as funções descritas no presente documento e gerar informações de saída. As informações de saída podem ser aplicadas a um ou mais dispositivos de saída, de maneira conhecida. Para os fins dessa aplicação, um sistema de processamento inclui qualquer sistema que tem um processador como, por exemplo, um processador de sinal digital (DSP), um microcontrolador, um circuito integrado de aplicação específica (ASIC) ou um microprocessador.
[00116] O código de programa pode ser implantado em uma linguagem de programação processual em nível elevado ou orientada por objeto para se comunicar com um sistema de processamento. O código do programa pode ser implantado em linguagem de máquina ou montagem, caso desejado. De fato, os mecanismos descritos no presente documento não se limitam em relação ao escopo a qualquer linguagem de programação particular. De qualquer modo, a linguagem pode ser uma linguagem compilada ou interpretada.
[00117] Um ou mais aspectos de pelo menos uma modalidade podem ser implantados por dados representativos armazenados em um meio legível por máquina que representa várias lógicas no processador, que, quando lidas por uma máquina, fazem com que a máquina fabrique lógica para realizar as técnicas descritas no presente documento. Tais representações conhecidas como “núcleos de IP” podem ser armazenadas em uma mídia legível por máquina tangível e fornecidas a vários clientes ou instalações de fabricação para carregar as máquinas de fabricação que, de fato, produzem a lógica ou o processador.
[00118] Essa mídia de armazenamento legível por máquina pode incluir, porém sem limitação, disposições tangíveis e não transitórias de artigos fabricados ou formados por uma máquina ou dispositivo, incluindo mídia de armazenamento como discos rígidos, qualquer outro tipo de disco incluindo disquetes, discos ópticos, memórias somente de leitura de disco compacto (CD-ROMs), discos regraváveis compactos (CD-RWs), e discos magnetoópticos, dispositivos semicondutores como memórias somente de leitura (ROMs), memórias de acesso aleatório (RAMs) como memórias de acesso aleatório dinâmicas (DRAMs), memórias de acesso aleatório estáticas (SRAMs), memórias somente de leitura programáveis e apagáveis (EPROMs), memórias rápidas, memórias somente de leitura eletricamente programáveis e apagáveis (EEPROMs), memória de mudança de fase (PCM), cartões magnéticos ou ópticos ou qualquer outro tipo de mídia adequada para armazenar instruções eletrônicas.
[00119] Consequentemente, as modalidades da invenção também incluem mídia legível por máquina, tangível e não transitória que contém instruções ou dados de modelo, como Linguagem de Descrição de Hardware (HDL) que define estruturas, circuitos, aparelhos, processadores e/ou recursos de sistema descritos no presente documento. Essas modalidades também podem ser denominadas produtos de programa.
Emulação (incluindo translação binária, transformação de código, etc.)
[00120] Em alguns casos, um conversor de instrução pode ser usado para converter uma instrução de um conjunto de instruções de origem para um conjunto de instruções alvo. Por exemplo, o conversor de instrução pode transladar (por exemplo, com o uso de translação binária estática, translação binária dinâmica que inclui compilação dinâmica), transformar, emular, ou, de outro modo, converter uma instrução a uma ou mais outras instruções a serem processadas pelo núcleo. O conversor de instrução pode ser implantado em software, hardware, firmware ou em uma combinação dos mesmos. O conversor de instrução pode estar no processador, fora do processador ou parte no processador e parte fora do processador.
[00121] A Figura 11 é um diagrama de blocos que contrasta o uso de conversores de instrução de software para converter instruções binárias em um conjunto de instruções de origem em instruções binárias em um conjunto de instruções-alvo de acordo com modalidades da invenção. Na modalidade ilustrada, o conversor de instrução é um conversor de instrução de software, embora alternativamente o conversor de instrução possa ser implantado em software, firmware, hardware ou várias combinações dos mesmos. A Figura 11 mostra um programa em uma linguagem de nível elevado 1102 que pode ser compilado com uso de um primeiro compilador 1104 para gerar primeiro código binário (por exemplo, x86) 1106 que pode ser executado nativamente por um processador com pelo menos um primeiro núcleo de conjunto de instruções 1116. Em algumas modalidades, o processador com pelo menos um primeiro núcleo de conjunto de instruções 1116 representa qualquer processador que pode realizar substancialmente as mesmas funções que um processador da Intel com pelo menos um núcleo de conjunto de instruções x86 executando-se compativelmente ou, de outra forma, processando-se (1) uma porção substancial do conjunto de instruções do Núcleo de conjunto de instruções x86 da Intel ou (2) versões de código de objeto de aplicativos ou outro software destinadas a serem executadas em um Processador da Intel com pelo menos um núcleo de conjunto de instruções x86, a fim de alcançar substancialmente o mesmo resultado que um processador da Intel com pelo menos um núcleo de conjunto de instruções x86. O primeiro compilador 1104 representa um compilador que é operável para gerar código binário do primeiro conjunto de instruções 1106 (por exemplo, código de objeto) que pode, com ou sem processamento de ligação adicional, ser executado no processador com pelo menos um primeiro núcleo de conjunto de instruções 1116. De forma semelhante, a Figura 11 mostra o programa na linguagem de nível elevado 1102 que pode ser compilado com uso de um compilador de conjunto de instruções alternativo 1108 para gerar código binário de conjunto de instruções alternativo 1110 que pode ser executado nativamente por um processador sem pelo menos um primeiro núcleo de conjunto de instruções da Intel 1114 (por exemplo, um processador com núcleos que executam o conjunto de instruções de MIPS de Tecnologias MIPS de Sunnyvale, CA, EUA e/ou que executam o conjunto de instruções ARM de ARM Holdings de Sunnyvale, CA, EUA). O conversor de instrução 1112 é usado para converter o primeiro código binário 1106 em código que pode ser executado nativamente pelo processador sem um primeiro núcleo de conjunto de instrução 1114. Esse código convertido provavelmente não é o mesmo que o código binário de conjunto de instruções alternativo 1110 devido ao fato de um conversor de instrução ter a capacidade para isso é difícil de realizar; no entanto, o código convertido obterá a operação geral e será composto de instruções do conjunto de instruções alternativo. Dessa forma, o conversor de instrução 1112 representa software, firmware, hardware ou uma combinação dos mesmos que, através de emulação, simulação ou qualquer outro processo, permite que um processador ou outro dispositivo eletrônico que não tem um primeiro processador ou núcleo de conjunto de instrução execute o primeiro código binário 1106.
Agendamento de Encadeamento com Base em Informações de Processador
[00122] Referindo-se, agora, à Figura 12, um diagrama de blocos de um sistema 1200 é mostrado de acordo com uma ou mais modalidades. Em algumas modalidades, o sistema 1200 pode ser todo ou uma porção de um dispositivo ou componente eletrônico. Por exemplo, o sistema 1200 pode ser um telefone celular, um computador, um servidor, um dispositivo de rede, um sistema em um chip (SoC), um controlador, um transceptor sem fio, uma unidade de fonte de alimentação, etc. Ademais, em algumas modalidades, o sistema 1200 pode ser parte de uma agrupação de dispositivos relacionados ou interconectados, tal como um centro de dados, um agrupamento de computação, etc.
[00123] Conforme mostrado na Figura 12, o sistema 1200 pode incluir um processador 1210 operacionalmente acoplado à memória de sistema 1205 e uma fonte de alimentação 1250. Adicionalmente, embora não mostrado na Figura 12, o sistema 1200 pode incluir outros componentes. Em uma ou mais modalidades, a memória de sistema 1205 pode ser implantada com qualquer tipo (ou tipos) de memória de computador (por exemplo, memória de acesso aleatório dinâmica (DRAM), memória de acesso aleatório estática (SRAM), memória não volátil (NVM), uma combinação de DRAM e NVM, etc.). A fonte de alimentação 1250 pode fornecer energia elétrica para o processador 1210.
[00124] Em uma ou mais modalidades, o processador 1210 pode ser um dispositivo de processamento de hardware (por exemplo, uma unidade de processamento central (CPU), um Sistema em um Chip (SoC), e assim por diante). Conforme mostrado, o processador 1210 pode incluir qualquer número de mecanismos de processamento 1220A a 1220N (também denominados, de modo geral, mecanismos de processamento 1220) e uma unidade-guia 1230. Cada mecanismo de processamento 1220 pode incluir um ou mais sensores 1240 para fornecer medições com relação ao mecanismo de processamento 1220 para a unidade-guia 1230. Por exemplo, os sensores 1240 podem fornecer medições com relação ao desempenho, eficiência, uso de potência, temperatura, confiabilidade, execução de encadeamento do mecanismo de processamento, e assim por diante.
[00125] Em uma ou mais modalidades, a unidade-guia 1230 pode ser um componente de hardware do processador 1210 para fornecer informações sobre mecanismo de processamento para guiar um agendador de encadeamento (não mostrado). Em algumas modalidades, as informações sobre mecanismo de processamento podem incluir uma ou mais classificações de mecanismos de processamento (por exemplo, classificações agnósticas de encadeamento, classificações específicas de encadeamento, e assim por diante). Adicionalmente, em algumas modalidades, as informações de mecanismo de processamento podem incluir uma ou mais características previstas de um mecanismo de processamento. Vários aspectos da unidade-guia 1230 são descritos abaixo com referência às Figuras 13A a 17.
[00126] Com referência à Figura 13A, é mostrado um diagrama de um sistema exemplificativo 1305, de acordo com uma ou mais modalidades. O sistema 1305 pode incluir lógica-guia 1300, um gerenciador de agendamento 1380 e um agendador 1385. A lógica-guia 1300 pode corresponder, de modo geral, a alguma parte ou toda a unidade-guia 1230 (mostrada na Figura 12). Em algumas modalidades, a lógica-guia 1300 pode ser implantada pelo menos em parte com o uso de hardware.
[00127] Conforme mostrado na Figura 13A, a lógica-guia 1300 pode incluir monitores de mecanismo de processamento (PE) 1310, monitores de encadeamento 1320, lógica de classificação de encadeamento agnóstico (TA) 1330, lógica de previsão 1335, lógica de classificação de encadeamento específico (TS) 1340 e uma interface de sistema operacional de hardware (HW-OS) 1370. Conforme usado no presente documento, “classificação de encadeamento agnóstico” se refere a uma classificação que é independente de qualquer tipo de encadeamento ou carga de trabalho particular. Por exemplo, alguns tipos de carga de trabalho podem incluir intensiva de computação (por exemplo, recursos de PE necessários), intensiva de memória (por exemplo, largura de banda de controlador de memória necessária), altamente paralelizada (por exemplo, recursos de processamento de gráficos necessários), acelerada (por exemplo, recursos de acelerador necessários), e assim por diante. Em algumas modalidades, um único encadeamento pode ser caracterizado como um ou mais tipos de carga de trabalho dependendo das instruções incluídas em uma sequência de instruções.
[00128] Em uma ou mais modalidades, os monitores de PE 1310 podem monitorar características de cada PE sem relação a uma carga de trabalho ou encadeamento específico. As características monitoradas de cada PE podem incluir características de desempenho, eficiência, uso de energia, térmicas e confiabilidade. Por exemplo, os monitores de PE 1310 podem monitorar métricas, tais como instruções por ciclo de clock, potência consumida por período de tempo, porcentagem de desempenho máximo, estado de potência média, temperatura, porcentagem de ciclo de vida que se esgotou, número total de ciclos de potência, nível de potência máxima e assim por diante. Os monitores de PE 1310 podem ser implantados com o uso de contadores de hardware.
[00129] Em algumas modalidades, os monitores de PE 1310 podem monitorar e/ou contar os eventos de sistema que representam características de execução de PE (por exemplo, eventos de microarquitetura, eventos de arquitetura, eventos de sistema, etc.). Por exemplo, os monitores de PE 1310 podem determinar o número de instruções de ponto flutuante retiradas, o número de instruções de memória retiradas, o número de previsões erradas de ramificação, o número de erros de cache, o número de bancas de pipeline e assim por diante.
[00130] Em uma ou mais modalidades, os monitores de encadeamento 1320 podem monitorar características de encadeamentos individuais. Por exemplo, os monitores de encadeamento 1320 podem monitorar métricas, tais como instruções concluídas por período de tempo, tempo ocioso e assim por diante. Adicionalmente, os monitores de encadeamento 1320 podem determinar um perfil e/ou tipo de execução, tais como processamento de gráficos, processamento de rede, cálculo de ponto flutuante, processamento de encriptação e assim por diante. Os monitores de encadeamento 1320 podem ser implantados com o uso de contadores de hardware.
[00131] Em algumas modalidades, a lógica de previsão 1335 pode usar dados dos monitores de PE 1310 e/ou dos monitores de encadeamento 1320 para prever o desempenho de um encadeamento em múltiplos PEs. Por exemplo, assume-se que um primeiro encadeamento é executado, atualmente, em um primeiro PE (por exemplo, PE 1220A mostrado na Figura 12) de um processador que tem múltiplos PEs. Em algumas modalidades, a lógica de previsão 1335 pode analisar características do primeiro encadeamento, do primeiro PE e outros PEs (por exemplo, PE 1220N mostrado na Figura 12) para prever características do primeiro encadeamento se a mesma fosse, em vez disso, executada nos outros PEs (por exemplo, se o primeiro encadeamento fosse movido para um segundo PE). As previsões realizadas pela lógica de previsão 1335 são descritas adicionalmente abaixo com referência às Figuras 15 e 17.
[00132] Em uma ou mais modalidades, a lógica de classificação de TA 1330 pode usar dados dos monitores de PE 1310 e/ou a lógica de previsão 1335 para gerar uma ou mais classificações de TA 1350. Em algumas modalidades, cada classificação de TA 1350 pode incluir uma lista de PEs dispostos em uma ordem de encadeamento agnóstico particular. Com referência, agora, à Figura 13B, mostrada é um conjunto exemplificativo de classificações de TA 1350, de acordo com algumas modalidades. Especificamente, conforme mostrado na Figura 13B, as classificações de TA 1350 podem incluir uma classificação de ordem de desempenho, uma classificação de ordem de eficiência, uma classificação de ordem de energia e uma classificação de ordem offline. Em algumas modalidades, a classificação de ordem de desempenho pode refletir as capacidades de desempenho relativas dos PEs (por exemplo, do processamento rápido até o processamento mais lento). A classificação de ordem de eficiência pode refletir as capacidades de eficiência de energia relativas dos PEs (por exemplo, da mais eficiente até a menos eficiente). A classificação de ordem de energia pode refletir o consumo de potência relativo dos PEs. A classificação de ordem offline pode indicar que PEs devem ser obtidos offline, e/ou uma ordem sequencial dos PEs em que devem ser obtidos offline, caso necessário. Em algumas modalidades, as classificações de TA 1350 podem ser armazenadas em uma localização ou estrutura de processador global. Por exemplo, as classificações de TA 1350 podem ser armazenadas em registros de um processador (por exemplo, processador 1210 mostrado na Figura 12), em memória externa (por exemplo, memória de sistema 1205 mostrada na Figura 12) e assim por diante.
[00133] Com referência, novamente, à Figura 13A, a lógica de classificação de TS 1340 pode usar dados dos monitores de encadeamento 1320 e/ou da lógica de previsão 1335 para gerar uma ou mais classificações de TS 1360. Em algumas modalidades, cada classificação de TS 1360 pode ser associada a um encadeamento particular, e pode incluir uma lista de PEs dispostos em uma ordem específica para aquele encadeamento particular. Com referência, agora, à Figura 13C, mostrada é um conjunto exemplificativo de classificações de TS 1360, de acordo com algumas modalidades. Por exemplo, as classificações de TS 1360 podem se uma classificação de PE para o encadeamento A, uma classificação de PE para o encadeamento B e assim por diante. Em algumas modalidades, as classificações de TS 1360 podem ser armazenadas em estrutura de memória de processador global. Por exemplo, as classificações de TA 1350 podem ser armazenadas em registros de um processador, em memória externa, em um bloco de contexto de encadeamento mantido pelo OS e assim por diante. Em algumas modalidades, as classificações de TS 1360 podem ser geradas e/ou atualizadas em resposta aos eventos de comutação de contexto de processo.
[00134] Com referência, novamente, à Figura 13A, em algumas modalidades, as classificações de TA 1350 e as classificações de TS 1360 podem ser fornecidas ao gerenciador de agendamento 1380 por meio da interface de HW-OS 1370. Em algumas modalidades, a interface de HW-OS 1370 pode incluir registros e/ou estruturas de memória definidas no nível de PE e/ou encadeamento. Adicionalmente, a interface de HW-OS 1370 pode incluir registros de enumeração e capacidades que permitam que o OS constate e/ou identifique suporte e definição específicos de informações de PE fornecidas pela lógicaguia 1300. A interface de HW-OS 1370 também pode suportar capacidades de interrupção para alertar o OS sobre a situação e/ou os eventos da lógica-guia 1300.
[00135] Em uma ou mais modalidades, o gerenciador de agendamento 1380 e/ou o agendador 1385 podem ser implantados em software (por exemplo, o sistema operacional, um aplicativo independente, etc.). O gerenciador de agendamento 1380 pode controlar a quantidade e/ou formato das classificações de TA 1350 e classificações de TS 1360 fornecidas ao agendador 1385. Por exemplo, o gerenciador de agendamento 1380 pode classificar classificações de PE, pode filtrar classificações de PE de acordo com critérios (por exemplo, por idade, por grupo de PE, por grupo de encadeamento, por tipo e assim por diante), pode combinar múltiplas classificações de PE para gerar classificações de PE combinadas, pode reformatar classificações de PE e assim por diante.
[00136] Em uma ou mais modalidades, o agendador 1385 pode usar as classificações de TA 1350 e/ou as classificações de TS 1360 para alocar encadeamentos em PEs (por exemplo, PEs 1220 mostrados na Figura 12). Por exemplo, o agendador 1385 pode usar informações de PE para agendar encadeamentos com base em uma prioridade, política ou estado de sistema atual (por exemplo, um equilíbrio especificado entre prioridades de desempenho, eficiência, consumo de potência e/ou confiabilidade), com base em características de encadeamento específicas (por exemplo, se um encadeamento for definido como uma tarefa de primeiro plano ou uma tarefa de segundo plano), para controlar gradientes de temperatura e/ou pontos quentes em PEs e assim por diante.
[00137] Em algumas modalidades, as classificações de TA 1350 e/ou as classificações de TS 1360 podem incluir indicações para fornecer orientação específica para o agendador 1385. Por exemplo, um primeiro PE pode receber um valor de classificação (por exemplo, “0”) para indicar que o primeiro PE deve permanecer offline e, assim, não deve receber nenhum encadeamento. Em algumas modalidades, um PE pode ser obtido offline para melhorar a confiabilidade do PE, para atrasar um limite de ciclo de vida do PE, para permanecer dentro de um montante de potência especificado, para limitar uso de potência durante um estado de potência particular, para controlar gradientes de temperatura e/ou pontos quentes em PEs e assim por diante.
[00138] Em algumas modalidades, a saída da lógica-guia 1300 pode refletir agrupações de PEs de acordo com critérios definidos. Por exemplo, os PEs listados nas classificações de TA 1350 podem ser agrupados em classes de desempenho (por exemplo, Classe A com métrica de desempenho de 0 a 2, Classe B com métrica de desempenho de 3 a 7, e Classe C com métrica de desempenho de 8 a 10). Tais agrupações podem permitir que o agendador 1385 gerencie alocações de encadeamento em grupos em vez de PEs individuais.
[00139] Com referência, agora, às Figuras 14A a 14B, são mostradas classificações exemplificativas que são atualizadas com base em informações de PE alteradas, de acordo com uma ou mais modalidades. Especificamente, Figura 14A mostra um exemplo que corresponde a um processador que inclui dois PEs (isto é, PE A e PE B). Assume-se que o processador tem um montante de potência completo (por exemplo, 5 W), e que PE A tem maior desempenho do que PE B ao receber o montante de potência completo. Consequentemente, conforme mostrado na Figura 14A, uma primeira classificação de desempenho 1400 indica que PE A é classificada melhor que PE B.
[00140] Agora, com referência à Figura 14B, assume-se que o montante de potência é reduzido até um nível de baixa potência (por exemplo, 1 W) em um ponto no tempo posterior. Assume-se, adicionalmente, que PE B tem desempenho maior que PE A ao receber esse nível de baixa potência. Por exemplo, PE B pode ser otimizado para operar em uma baixa velocidade de clock. Consequentemente, conforme mostrado na Figura 14B, a segunda classificação de desempenho 1410 indica que PE B é melhor classificado que PE A. Dessa maneira, as informações de classificação recebidas por um agendador podem ser atualizadas para refletir condições de alteração que afetam os mecanismos de processamento.
[00141] Com referência, agora, à Figura 15A, é mostrado um diagrama de um sistema exemplificativo 1500, de acordo com uma ou mais modalidades. Conforme mostrado, o sistema 1500 pode incluir um mecanismo de processamento (PE) 1510 e lógica de previsão 1520. A lógica de previsão 1520 pode corresponder, de modo geral, a alguma ou toda a lógica de previsão 1335 mostrada na Figura 13A.
[00142] Em algumas modalidades, o PE 1510 pode incluir um monitor de desempenho 1512, um monitor de energia 1514 e um monitor de evento 1516. Adicionalmente, o PE 1510 pode executar um encadeamento de origem 1518. O monitor de evento 1516 pode detectar eventos do PE 1510 durante a execução do encadeamento de origem 1518, tais como retiradas de instrução de memória, retiradas de instrução de ponto flutuante, previsões erradas de ramificação, erros de cache, bancas de pipeline e assim por diante. O monitor de desempenho 1512 pode monitorar características de desempenho do PE 1510 (por exemplo, instruções por ciclo de clock, porcentagem de desempenho máximo, etc.). O monitor de energia 1514 pode monitorar características de energia do PE 1510, tal como potência consumida por período de tempo, estado de potência, etc. Em algumas modalidades, o monitor de desempenho 1512, o monitor de energia 1514 e/ou o monitor de evento 1516 podem ser implantados com o uso de contadores de hardware.
[00143] Em uma ou mais modalidades, a lógica de previsão 1520 pode incluir um atualizador de peso 1522, pesos de previsão 1524, vetores de evento 1526 e previsores de PE 1514. Em algumas modalidades, a lógica de previsão 1520 pode receber indicações de eventos do monitor de evento 1516 do PE 1510, e pode ocupar os vetores de evento 1526 de acordo com as indicações recebidas.
[00144] Com referência, agora, à Figura 15B, é mostrado um conjunto exemplificativo de vetores de evento 1526, de acordo com algumas modalidades. Conforme mostrado, os vetores de evento 1526 podem incluir grupos de vetores associados aos vários PEs (isto é, PE A até PE N). Em algumas modalidades, cada vetor de evento 1526 pode incluir um número único de campos, em que cada campo está associado a um tipo único de evento. Por exemplo, um grupo de vetores para PE A pode incluir um vetor de desempenho 1530 e um vetor de energia 1532. O vetor de desempenho 1530 pode incluir quatro campos, em que cada campo indica a ocorrência de um tipo de evento particular. Por exemplo, um vetor de desempenho 1530 pode incluir um primeiro campo para armazenar um número de retiradas de instrução de memória, um segundo campo para armazenar um número de retiradas de instrução de ponto flutuante e assim por diante. O vetor de energia 1532 pode incluir três campos, em que cada campo indica a ocorrência de um tipo de evento particular.
[00145] Contempla-se que os vetores de evento 1526 para diferentes PEs (ou diferentes tipos de PE) possam incluir campos para diferentes tipos de evento e possam incluir diferentes números de campos. Por exemplo, o grupo de vetores para PE N pode incluir um vetor de desempenho 1534 com três campos, e um vetor de energia 1536 com três campos.
[00146] Em algumas modalidades, os pesos de previsão 1524 (mostrados na Figura 15A) podem estar dispostos em vetores similares aos vetores de evento 1526. Com referência, agora, à Figura 15C, é mostrado um conjunto exemplificativo de pesos de previsão 1524 de acordo com algumas modalidades. Conforme mostrado, os pesos de previsão 1524 podem incluir vetores de peso 1540, 1542 para PE A. O vetor de peso 1540 pode incluir quatro campos de peso que correspondem ao vetor de desempenho 1530. O vetor de peso 1542 pode incluir três campos de peso que correspondem ao vetor de energia 1532 do PE A. Adicionalmente, os vetores de peso 1544, 1546 podem corresponder, respectivamente, ao vetor de desempenho 1534 e vetor de energia 1536 para PE B.
[00147] Com referência, novamente, à Figura 15A, os previsores de PE 1528 podem gerar previsões de PE para executar o encadeamento de origem 1518 em outros PEs. Especificamente, os previsores de PE 1528 podem usar eventos no mecanismo de processamento 1510 (conforme ocupado nos vetores de evento 1526) e os pesos de previsão 1524 para prever características de encadeamento de origem 1518 se executado em diferentes PEs (isto é, em PEs diferentes de PE 1510). Por exemplo, os previsores de PE 1528 podem fornecer previsões de desempenho, previsões de uso de potência, previsões de frequência de clock e assim por diante. Os previsores de PE 1528 podem incluir previsores lineares (por exemplo, regressão linear), previsores não lineares, modelos de lógica de reforço e assim por diante.
[00148] Em uma ou mais modalidades, os previsores de PE 1528 podem usar um previsor linear para multiplicar um vetor de evento 1526 por um vetor de peso dos pesos de previsão 1524, e determinar um valor previsto com base em uma soma dos produtos de elemento. Por exemplo, o previsor linear pode multiplicar cada elemento de vetor de desempenho 1530 do PE A (mostrado na Figura 15B) pelo elemento correspondente do vetor de peso 1540 do PE A (mostrado na Figura 15C), e pode somar os produtos de todos os elementos de vetor. A soma resultante pode ser um valor de desempenho previsto para o encadeamento de origem 1518 se o mesmo for executado no PE A. Em algumas modalidades, o desempenho previsto pode ser fornecido a um agendador (por exemplo, agendador 1385 mostrado na Figura 13A), e o agendador pode usar essas informações para determinar a possibilidade de mover o encadeamento de origem 1518 para PE A do PE 1510.
[00149] Em uma ou mais modalidades, os previsores de PE 1528 podem fornecer previsões para usar um previsor linear para multiplicar um vetor de evento 1526 por um vetor de peso dos pesos de previsão 1524, e determinar um valor previsto com base em uma soma dos produtos de elemento. Por exemplo, o previsor linear pode multiplicar cada elemento de vetor de desempenho 1530 do PE A (mostrado na Figura 15B) pelo elemento correspondente do vetor de peso 1540 do PE A (mostrado na Figura 15C), e pode somar os produtos de todos os elementos de vetor. A soma resultante pode ser um valor de desempenho previsto para o encadeamento de origem 1518 se o mesmo for executado no PE A. Em algumas modalidades, o desempenho previsto pode ser fornecido a um agendador (por exemplo, agendador 1385 mostrado na Figura 13A), e o agendador pode usar essas informações para determinar a possibilidade de mover o encadeamento de origem 1518 para PE A do PE 1510.
[00150] Em uma ou mais modalidades, o atualizador de peso 1522 pode comparar previsões de PE para um dado PE para valores medidos para ajustar os pesos de previsão 1524. Por exemplo, assume-se que um agendador recebe características de desempenho e energia previstas para PE A e, então, realoca o encadeamento de origem 1518 para PE A. Assume-se, adicionalmente, que PE A inclui um monitor de desempenho 1512 e um monitor de energia 1514 que fornecem características de desempenho e energia medidas para a execução do encadeamento de origem 1518 em PE A. Nesse exemplo, o atualizador de peso 1522 pode comparar as características previstas e medidas, e pode ajustar os pesos de previsão 1524 com base nessa comparação. Dessa maneira, o atualizador de peso 1522 pode ajustar os pesos de previsão 1524 ao longo do tempo para melhorar a precisão de previsões futuras da lógica de previsão 1520.
[00151] Conforme descrito acima, sistemas de processamento heterogêneo atuais incluem uma mistura de núcleos “grandes” de alta potência e alto desempenho e núcleos "pequenos” de melhor eficiência energética. Algumas dessas arquiteturas heterogêneas também integram processadores de gráficos, processadores de sinal digital e outras formas de computar unidades no mesmo chip ou pacote. O principal desafio ao trabalhar com processadores heterogêneos é alocar, de maneira ideal, encadeamentos de software em núcleos ou outros recursos de processamento para consumo de desempenho e/ou energia ideal.
[00152] A título de uma visão geral, as modalidades da invenção abordam diversos desafios que incluem auxiliar o OS a identificar o núcleo mais apropriado ou tipo de processador lógico, que ajuda o OS a agendar o encadeamento de software correto para o núcleo correto e definir prioridades relativas entre encadeamentos quando se têm mais encadeamentos, então, núcleos de alto desempenho, e que ajudam o OS a agendar o encadeamento de software mais apropriado no núcleo mais apropriado ou tipo de processador lógico a implantar as melhores economias de energia e potência.
[00153] Quando um novo encadeamento deve ser executado, as modalidades descritas abaixo identificam a classe associada ao encadeamento (ou a classe padrão) e selecionam o processador lógico disponível dentro dessa classe que tem o maior desempenho e/ou melhores valores de eficiência de energia. Se o processador lógico ideal não estiver disponível, uma modalidade da invenção determina o próximo melhor processador lógico e também agenda o novo encadeamento para execução nos próximos núcleos de melhor desempenho ou energia, ou migra um encadeamento de execução do processador lógico ideal para abrir espaço para o novo encadeamento. Em uma modalidade, a decisão de migrar ou não migrar o encadeamento de execução é com base em uma comparação de valores de desempenho e/ou energia associados ao novo encadeamento e ao encadeamento de execução. Em uma implantação, dependo do OS escolher o método de agendamento apropriado por encadeamento de software, seja com base no consumo de energia (por exemplo, para ambientes de baixa potência) ou melhor desempenho
[00154] Conforme usado no presente documento, um processador lógico (LP) pode compreender um núcleo de processador ou uma porção especificada de um núcleo de processador (por exemplo, um encadeamento de hardware no núcleo de processador). Por exemplo, um único núcleo encadeado pode mapear diretamente em um processador lógico, enquanto um núcleo de SMT pode mapear em múltiplos processadores lógicos. Se o núcleo de SMT tiver capacidade para executar simultaneamente N encadeamentos, por exemplo, então, N processadores lógicos podem ser mapeados no núcleo de SMT (por exemplo, um para cada encadeamento simultâneo). Nesse exemplo, N pode ser qualquer valor com base nas capacidades do núcleo de SMT (por exemplo, 2, 4, 8, etc). Outros recursos de execução podem ser associados a um processador lógico, tal como um espaço de memória alocada e/ou porção de um cache.
[00155] Em alguns casos, a plataforma pode incluir uma mistura de núcleos, alguns dos quais incluem suporte de SMT e alguns não. Em alguns casos, os resultados de desempenho e energia de um núcleo que tem suporte de SMT podem ser melhores que os resultados em um núcleo de não SMT ao executar mais de um encadeamento de software. Em outros casos, o núcleo de não SMT pode fornecer melhores resultados de desempenho/energia. Assim, em uma modalidade, a ordem de agendamento é: (1) agendar primeiro no núcleo com maior desempenho/energia; (2) segundo, agendar no núcleo com capacidades inferior de desempenho/energia; e (3) finalmente, agendar no núcleo com suporte de SMT.
[00156] O gráfico na Figura 16A mostra uma pluralidade de diferentes cargas de trabalho ou traços 1602 e as razões resultantes de instruções de núcleo de desempenho por clock (IPC GRANDE ou IPCB) sobre instruções de núcleo de eficiência por clock (IPC PEQUENO ou IPCS). Pode ser visto a partir dos dados na Figura 16A que o agendamento aleatório de encadeamentos a partir de diferentes tipos de cargas de trabalho em um conjunto de núcleos heterogêneos pode resultar em desempenho inferior do que seria possível quando comparado com mecanismos de alocação mais inteligentes.
[00157] A Tabela A abaixo mostra a diferença entre seleção de núcleo aleatória e modalidades da invenção que alocam núcleos/processadores como uma função do número de núcleos grandes e núcleos/processadores pequenos. Encontrar o agendador ideal para diferentes tipos de encadeamentos de software pode ter um impacto significativo para desempenho multiencadeado assimétrico.
Figure img0001
[00158] Em algumas modalidades descritas abaixo, os “núcleos pequenos” são processadores atômicos e os “núcleos grandes” são núcleos Core i3, i5, i7, ou i9. Esses núcleos podem ser integrados no mesmo molde e/ou interconectados no mesmo pacote de processador. Nota-se, no entanto, que princípios subjacentes da invenção não se limitam a nenhuma arquitetura de processador particular ou nenhum tipo específico de processador ou núcleo.
[00159] Na mesma quantidade de potência, um núcleo pequeno, tal como um processador atômico pode fornecer desempenho maior que aquele de um núcleo grande. Esse ponto de cruzamento de potência/desempenho é uma função da razão de IPC de núcleo grande sobre IPC de núcleo pequeno (isto é, IPCB/IPCS) que é particularmente impactada pelos encadeamentos únicos ou um pequeno número de encadeamentos. Os diferentes valores de IPCB/IPCS também impactam o potencial para reduzir energia de modo a melhorar a vida útil da bateria. Conforme a razão diminui, o agendamento de trabalho em núcleos grandes se torna menos atrativo a partir da perspectiva de economia de energia.
[00160] A Figura 16B destaca uma modalidade na qual diferentes classes são definidas para diferentes tipos de cargas de trabalho. Em particular, essa modalidade define uma primeira classe de cargas de trabalho com uma razão IPCB/IPCS abaixo de 1,3, uma segunda classe de cargas de trabalho com uma razão IPCB/IPCS abaixo de 1,5 e uma terceira classe de cargas de trabalho com uma razão IPCB/IPCS acima (ou igual a) de 1,5.
[00161] Uma modalidade da invenção mantém uma visão global dos dados de desempenho e energia associados aos diferentes tipos de núcleo e cargas de trabalho assim como diferentes classes de valores de IPC grandes/pequenos. Conforme mostrado na Figura 17, em uma implantação, isso é realizado com uma tabela global 1740 que armazena o desempenho, energia e outros dados para cada tipo de núcleo 1751 a 1752 e/ou processador lógico (LP). A tabela global 1740 e outra lógica mostrada na Figura 17 (por exemplo, gerenciador de tabela 1745) pode ser implantada em hardware ou por uma combinação de hardware e software.
[00162] Com fins de ilustração, dois tipos de núcleos são mostrados na Figura 17: núcleos de desempenho 1751 (por vezes denominados núcleos “grandes”) e núcleos de eficiência 1752 (por vezes denominados núcleos “pequenos”). Nota-se, no entanto, que vários núcleos e combinações alternativas adicionais de núcleos grandes/pequenos podem ser usados.
[00163] Em uma modalidade, um agendador 1710 mapeia encadeamentos/cargas de trabalho 1701 em núcleos 1751 a 1752 e/ou processadores lógicos LP0 a LP7 com base em condições de operação atuais 1741 e os dados de desempenho e energia a partir da tabela global 1740 (descrita em maiores detalhes abaixo). Em uma modalidade, o agendador 1710 depende de (ou inclui) uma unidade-guia/unidade de mapeamento 1714 para avaliar diferentes mapeamentos de encadeamento/processador lógico em vista da tabela global 1740 para determinar qual encadeamento deve ser mapeado para cada processador lógico. O agendador 1710 pode, então, implantar o mapeamento. O agendador 1710, unidade-guia/unidade de mapeamento 1714, gerenciador de tabela 1745 e tabela global 1740 podem ser implantados em hardware/conjunto de circuitos programado por software (por exemplo, definindo-se valores de registro) ou por uma combinação de hardware e software.
[00164] As condições de operação atualmente detectadas 1741 podem incluir variáveis relacionadas ao consumo de potência e temperatura, e podem determinar a possibilidade de escolher valores de eficiência ou valores de desempenho com base nessas condições. Por exemplo, se o sistema de computação for um dispositivo móvel, então, o agendador 1710 pode realizar mapeamento com o uso de opções de eficiência mais frequentemente, dependendo da possibilidade de o dispositivo móvel ser atualmente alimentado por uma bateria ou ligado em uma saída elétrica. De maneira similar, se o nível de bateria do sistema de computação móvel for baixo, então, o agendador 1710 pode tender a favorecer opções de eficiência (a menos que seja mais eficiente usar um núcleo maior por um período de tempo mais curto). Como outro exemplo, se uma quantidade significativa de potência do montante de potência geral do sistema for consumida por outro componente de processador (por exemplo, a unidade de processamento de gráficos realiza operações intensivas de gráficos), então, o agendador 1710 pode realizar um mapeamento de eficiência para assegurar que o montante de potência não seja violado.
[00165] Uma modalidade de uma tabela global 1740, mostrada abaixo como a Tabela B, especifica diferentes valores de eficiência e desempenho de energia para cada núcleo 1751 a 1752 dentro de cada classe definida (por exemplo, Eff02, Perf11, etc). Os núcleos são associados a um número de processador lógico (LP0 a LPn) e cada processador lógico pode representar qualquer tipo de núcleo físico ou qualquer porção definida de um núcleo físico, que inclui um núcleo inteiro.
[00166] Em uma modalidade, um gerenciador de tabela 1745 realiza atualizações na tabela global 1740 com base em retroalimentação 1753 com relação à execução dos diferentes encadeamentos/cargas de trabalho 1701. A retroalimentação pode ser armazenada em um ou mais MSRs 1755 e lida pelo gerenciador de tabela 1745.
[00167] A primeira vez que um encadeamento/carga de trabalho é executado, o mesmo pode receber uma classe padrão (por exemplo, Classe 0). O gerenciador de tabela 1745, então, analisa os resultados de retroalimentação quando executado na classe padrão, e se uma categorização mais eficiente estiver disponível, o gerenciador de tabela 1745 atribui esse encadeamento/carga de trabalho particular a uma classe diferente. Em uma modalidade, a retroalimentação 1753 é usada em uma modalidade para gerar um índice na tabela global 1740. As classes nessa modalidade são criadas com base em faixas de IPCB/IPCS, conforme descrito acima.
Figure img0002
[00168] Em uma modalidade, o agendador 1710 usa a tabela global 1740 e informações associadas para realizar uma visão global dos diferentes tipos de núcleo e métricas de desempenho e energia correspondentes para diferentes classes. Extensões para agendadores existentes podem adicionar novas colunas por tipo de classe. Em uma modalidade, as diferentes classes permitem que um sistema operacional ou software agendador escolha diferentes mecanismos de alocação para uma carga de trabalho com base na classe dessa carga de trabalho.
[00169] Em uma modalidade, a Classe 0 é definida como uma classe padrão que mantém suporte de legado e representa o caso mediano da curva. Nessa modalidade, a unidade-guia/unidade de mapeamento 1714 e/ou agendador 1710 usa essa classe padrão quando nenhum dado válido foi coletado para o encadeamento atual. Conforme descrito acima, o gerenciador de tabela 1745 pode avaliar a retroalimentação 1753 com relação à execução do encadeamento na classe padrão e fornecer uma atualização 1754 à tabela global 1740 se uma diferente classe for mais apropriada. Por exemplo, o mesmo pode categorizar o encadeamento na Classe 1 se a razão IPCB/IPCS do encadeamento for maior que um primeiro limite especificado (por exemplo, 1,5) e categorizar o encadeamento em Classe 2 se a razão IPCB/IPCS for menor que um segundo limite (por exemplo, 1,3).
[00170] As diferentes colunas por classe na tabela global 1740 podem ser especificadas por meio de um ou mais registros de controle. Por exemplo, em uma implantação x86, as colunas podem ser enumeradas por CPUID[6].EDX[7:0] (por exemplo, para uma Tabela com 7-1 diferentes colunas por classe). O sistema operacional (OS) 1713 e/ou agendador 1710 pode aprender qual linha é relevante para cada processador lógico por um ou mais bits em EDX (por exemplo, CPUID.6.EDX[31-16] = n, em que n é a posição de índice que a linha de processador lógico é definida) e também pode determinar o número de classes por meio de um valor em EDX (por exemplo, indicado por CPUID.6.EDX[11:8]). O OS pode calcular a localização de cada linha de processador lógico na Tabela HGS através da seguinte técnica:
[00171] Se HGS+ for habilitado
[00172] Endereço de Base de HGS + 8 + CHÃO((no de classes * no de bits de definição de bitmap de capacidades de suporte – 1) / 8 + 1) * 8 *(índice de fileira de LPn +1)
[00173] além de (HGS+ é desabilitado e HGS de legado é habilitado)
[00174] Endereço de Base de HGS + 8 + 8 * (índice de fileira de LPn +1)
[00175] O tamanho da Tabela HGS pode ser enumerado por CPUID[6].EDX[11:8]
[00176] O OS pode enumerar sobre o suporte básico de HGS de legado a partir de CPUID[6].EAX[19] e sobre o suporte de HGS+ mais novo de CPUID[6].EAX[23]
[00177] Em uma modalidade, os valores de capacidade de desempenho são não semânticos e não necessariamente refletem o desempenho real.
[00178] As colunas de desempenho na Tabela armazenam valores de desempenho relativos entre os processadores lógicos representados nas diferentes fileiras. Uma modalidade da interface fornece compartilhamento de linhas com uma pluralidade de diferentes processadores lógicos que pertencem ao mesmo tipo de núcleo, desse modo se fornece comparações razoáveis.
[00179] Para cada classe definida, a razão de valores de desempenho entre núcleos dentro da mesma coluna, tal como
Figure img0003
fornece uma comparação bruta, porém, não fornece um valor de desempenho real. De maneira similar, a razão de valores de eficiência de energia em uma coluna, tal como
Figure img0004
para cada processador lógico fornece uma comparação relativa, porém, não reflete a energia real consumida.
[00180] Em uma modalidade, o gerenciador de tabela 1745 atualiza a tabela global 1740 quando o valor de desempenho ou energia relativo sentiu uma alteração significativa que pode impactar o agendamento, tal como quando a ordem entre os núcleos ou a diferença entre os núcleos se altera. Essas alterações podem ser especificadas em uma ou mais colunas e, para cada coluna que foi atualizada, o cabeçalho de coluna é marcado para indicar que a alteração foi feita. Além disso, um bit de situação pode ser definido em um registro de controle para indicar que uma atualização ocorreu. Por exemplo, em algumas implantações x86, o bit de situação é definido em um registro específico de modelo (MSR) particular.
[00181] A tabela global 1740 pode ser atualizada dinamicamente como resultado de limitações físicas, tais como limitações de potência ou térmicas. Como resultado, parte das ou todo as colunas de valor de classe de desempenho e energia podem ser atualizadas e a ordem na qual um núcleo com o melhor desempenho ou energia é selecionado pode ser alterada.
[00182] Quando atualizações como essa ocorrem, o hardware marca a coluna (ou colunas) que foi atualizada na tabela global 1740 (por exemplo, no campo de cabeçalho de coluna). Além disso, em uma modalidade, o campo de carimbo de tempo é atualizado para marcar a última atualização da Tabela.
[00183] Além disso, os registros de situação térmica também podem ser atualizados e, se permitido pelo OS, as interrupções térmicas. Uma interrupção também pode ser gerada para notificar o OS sobre as alterações. Depois da definição das atualizações térmicas, o gerenciador de tabela 1745 pode não atualizar a tabela global 1740 mais do que já permitido pelo OS (por exemplo, o OS limpa o bit de registro). Isso é realizado de modo a evitar realizar alterações enquanto o OS lê a Tabela.
[00184] Dado que as diferentes classes podem ser impactadas de uma maneira diferente para diferentes limitações físicas, uma modalidade da invenção fornece a habilidade de atualizar apenas classes de Tabela selecionadas. Essa configurabilidade fornece resultados ideais mesmo quando as condições físicas se alteram. Depois de uma indicação de que a ordem do desempenho ou energia de classe é alterada, o OS pode reagendar encadeamentos de software de acordo com cada índice de classe do encadeamento de software.
[00185] Em uma modalidade, em resposta às alterações detectadas, um MSR de nível de encadeamento 1755 relata o índice na coluna de encadeamento atual ao OS 1713 e/ou agendador 1710, assim como um bit válido para indicar se os dados relatados são válidos. Por exemplo, para um MSR de nível de encadeamento 1755, os seguintes bits podem fornecer indicações para RTC (características de tempo de execução):
[00186] Bit 7:0 – Índice de classe de aplicação da Tabela, que representa a última “Classe de Aplicação” executada nesse encadeamento de hardware;
[00187] Bit 63 – Bit válido; se definido em 1, o OS/agendador pode usar o mesmo, de outra forma o índice de classe deve ser ignorado
[00188] Em uma modalidade, o bit válido é definido ou liberado com base no estado atual e características operacionais da microarquitetura. Por exemplo, os dados podem não ser válidos depois de uma comutação de contexto de um novo encadeamento 1701 até que o hardware (por exemplo, o gerenciador de tabela 1745) possa avaliar ou, de outra forma, determinar as características do novo encadeamento. O bit válido também pode ser ajustado ao transitar entre fluxos de código de segurança específicos. Em circunstâncias em que o bit válido não é definido, o agendador 1710 pode ignorar os dados de retroalimentação e usar o último índice conhecido como válido.
[00189] Em uma modalidade, o OS 1713 e/ou agendador 1710 lê esse MSR 1755 ao trocar um contexto de modo a ter as informações mais atualizadas para o próximo contexto trocado. O OS 1713 e/ou agendador 1710 também pode ler o MSR 1755 dinamicamente durante o tempo de execução do encadeamento de software atual. Por exemplo, o OS/agendador pode ler o MSR 1755 em cada tique do agendador 1710.
[00190] De modo que o hardware (por exemplo, o gerenciador de tabela 1745) tenha o tempo necessário para aprender sobre o novo encadeamento e assegurar que a validade do índice de relato após o novo contexto seja trocada, uma modalidade da invenção fornece a opção de salvar e recuperar os metadados de microarquitetura que incluem o histórico da detecção de índice. Em uma implantação, isso é realizado com o uso do MSR 1755 que pode ser lido ou gravado como um MSR regular ou utilizando-se os mecanismos para salvar e recuperar do processador (por exemplo, tal como XSAVES/XRESROS em uma implantação x86). Por exemplo:
[00191] MSR de escopo de nível de encadeamento (Ler/Gravar)
[00192] Bit 63:0 – encadeamento de software, metadados de retroalimentação de histórico de hardware.
[00193] Em uma implantação, o OS 1713 e/ou agendador 1710 lê esses metadados ao trocar encadeamento e atualiza os mesmos durante execução e/ou ao trocar o mesmo encadeamento.
[00194] Em algumas implantações, quando os metadados não são suportados, ainda é necessário que o histórico de previsão seja reinicializado durante uma comutação de contexto, de modo a permitir a retroalimentação válida que não será impactada a partir da execução anterior do encadeamento de software. Esses dados de reinicialização podem ser permitidos se o OS for configurado para “optar incluir” suporte de reinicialização de histórico toda vez que IA32_KENTEL_GS_BASE é executado. Outras técnicas de comutação de contexto com base em OS que incluem métodos de arquitetura H/W também podem ser usadas de modo a reiniciar o histórico de previsão HGS+ durante comutações de contexto. Em outra modalidade, um MSR específico é habilitado com um bit de controle que força a reinicialização do histórico. Esse MSR de controle pode ser salvo e restaurado por XSAVES/XRESORS ou manualmente usado pelo OS em toda comutação de contexto. Outra opção pode ser que toda vez que o valor desse MSR for zero, a gravação ou restauração desse MSR reiniciará o histórico HGS+. Outra modalidade reinicia o histórico por meio de um MSR de configuração de nível de encadeamento (conforme descrito abaixo) que permite que a opção para o OS reinicie manualmente o histórico.
[00195] O OS 1713 e/ou agendador 1710 pode habilitar e desabilitar a extensão da tabela global 1740 por meio de um bit de controle de MSR. Isso pode ser feito, por exemplo, para evitar conflitos com implantações de legado e/ou para evitar vazamento de energia. Por exemplo, o sistema operacional pode desabilitar dinamicamente os recursos descritos no presente documento durante execução em sistemas de legado. Enquanto desabilitado, o relato de nível de encadeamento de MSR de retroalimentação é inválido. Habilitação pode ser realizada no nível de processador lógico de modo a fornecer, por exemplo, ao VMM a opção de habilitar as técnicas descritas no presente documento para parte de um SoC com base em cada modo de uso de VM (que inclui a possibilidade do VM suportar essas técnicas).
[00196] Em uma modalidade particular, a configuração de nível de encadeamento é implantada como a seguir:
[00197] • IA32_HW_FEEDBACK_THREAD_CONFIG fornece escopo de nível de encadeamento Ler/Gravar (0x17D3)
[00198] - Bit 0: Permite que o processador lógico suporte as técnicas de agendamento descritas no presente documento. Quando definido em 1, permite o suporte da retroalimentação de hardware de nível de encadeamento e reinicia seu histórico. Padrão: 0.
[00199] - Bit 1: WRMSR_IA32_KERNEL_GS_BASE _CLEAR_HGS_HISTORY, quando definido, WRMSR de IA32_KERNEL_GS_BASE reinicia o histórico de previsão. Padrão: 0.
[00200] - Bit 2: Bit de comando para reiniciar o histórico, sempre se lê como 0, reiniciar o histórico de previsão quando definido (gravado com ‘1’)
[00201] Em uma implantação, habilitação e desabilitação é realizada por meio de um MSR de nível de pacote. Por exemplo, em uma implantação x86, o seguinte MSR pode ser especificado:
[00202] IA32_HW_FEEDBACK_CONFIG
[00203] Bit 0 - Habilita. Quando definido em 1, esse bit habilita a interface de retroalimentação de hardware descrita no presente documento. O padrão é 0.
[00204] Bit 1 - Habilita. Quando definido em 1, esse bit habilita suporte de múltiplas classes. As colunas de classes extra na tabela global 1740 são válidas apenas enquanto o bit 1 é definido. Definir esse bit permite que a retroalimentação de nível de encadeamento 1753 enviada ao MSR 1755 suporte índices de classe de relato válidos.
[00205] Conforme mencionado, quando um novo encadeamento deve ser executado, as modalidades da invenção identificam a classe associada ao encadeamento (ou a classe padrão) e selecionam o processador lógico disponível dentro dessa classe que tem o maior desempenho e/ou melhores valores de eficiência de energia (dependendo do consumo de potência desejado atual). Se o processador lógico ideal não estiver disponível, uma modalidade da invenção determina o próximo melhor processador lógico e também agenda o novo encadeamento para execução no próximo melhor processador lógico, ou migra um encadeamento de execução do processador lógico ideal para abrir espaço para o novo encadeamento. Em uma modalidade, a decisão de migrar ou não migrar o encadeamento de execução é com base em uma comparação de valores de desempenho e/ou energia associados ao novo encadeamento e ao encadeamento de execução.
[00206] Para um encadeamento de “Alta Prioridade”, a coluna relevante é determinada com base no índice de classe de encadeamento (k). Em uma modalidade, o índice é fornecido por um MSR de retroalimentação 1755. Na coluna de classe de desempenho de encadeamento (k), uma fileira é identificada com o maior valor de desempenho. Se o processador lógico correspondente está livre, então, o encadeamento é agendado nesse processador lógico.
[00207] Alternativamente, se todos os processadores lógicos de melhor desempenho estão ocupados, a coluna de classe de desempenho (k) é, então, buscada em um processador lógico livre, que trabalha dos valores de desempenho mais altos até os mais baixos. Quando um está localizado, o encadeamento pode ser agendado no processador lógico livre ou um encadeamento de execução pode ser migrado do processador lógico preferencial e o novo encadeamento pode ser agendado no processador lógico preferencial.
[00208] Nessa modalidade, o agendador 1710 pode avaliar a possibilidade de migrar um encadeamento existente para um diferente processador lógico para garantir uma distribuição justa de recursos de processamento. Em uma modalidade, comparações são feitas entre os diferentes valores de desempenho dos diferentes encadeamentos e processadores lógicos para render essa decisão, conforme descrito abaixo.
[00209] A Figura 18 ilustra um método de acordo com uma modalidade da invenção. O método pode ser implantado nas arquiteturas descritas acima, porém, sem limitação a nenhuma arquitetura particular.
[00210] Em 1801, um novo encadeamento é recebido e deve ser agendado para execução em um processador lógico. Em 1802, o índice do novo encadeamento (I) é usado para buscar um processador lógico livre na classe de desempenho associada ao novo encadeamento (por exemplo, uma das colunas na tabela global 1740).
[00211] Se houver um processador lógico ocioso com o maior valor de desempenho, determinado em 1803, então, o novo encadeamento é agendado no processador lógico ocioso em 1810. Se não houver, então, em 1805, um processador lógico secundário é identificado em 1805. Por exemplo, o agendador pode buscar pela coluna na tabela global 1740 para identificar o processador lógico que tem o segundo maior valor de desempenho.
[00212] Em 1806, uma avaliação é realizada para determinar a possibilidade de migrar quaisquer encadeamentos de execução de um processador lógico que seria um LP de maior desempenho para o novo encadeamento a um diferente processador lógico para abrir espaço para o novo encadeamento no processador lógico de maior desempenho. Em uma modalidade, essa avaliação envolve uma comparação dos valores de desempenho do encadeamento de execução e o novo encadeamento no processador lógico de maior desempenho e um ou mais processadores lógicos alternativos. Para o novo encadeamento, o processador lógico alternativo compreende o processador secundário (isto é, que fornecerá o próximo maior desempenho ao novo encadeamento). Para o encadeamento de execução, o processador lógico alternativo pode compreender o processador lógico secundário (caso o mesmo forneça o segundo maior desempenho) ou outro processador lógico (caso o mesmo forneça o segundo maior desempenho).
[00213] Em uma implantação particular, a razão do desempenho no LP de maior desempenho sobre o desempenho no LP alternativo tanto para o novo encadeamento quanto para o encadeamento de execução. Se a razão para o novo encadeamento for maior, então, o encadeamento de execução é migrado para seu processador lógico alternativo. Se a razão para o encadeamento de execução for maior, então, o novo encadeamento será agendado em seu processador lógico alternativo. A seguir são cálculos de razão exemplificativos:
[00214] Valor Comparativo de Novo Encadeamento = Perfmaior novo encadeamento/Perfnovo encadeamento alternativo
[00215] Valor Comparativo de Encadeamento de Execução = Perfmaior encadeamento de execução/Perfencadeamento de execução alternativo
[00216] Se a razão acima for maior para o novo encadeamento, determinado em 1807, então, o encadeamento de execução é migrado para seu processador lógico alternativo em 1808 (isto é, o LP no qual se terá o segundo maior desempenho) e novo encadeamento é agendado para executar em seu processador lógico de maior desempenho. Se a razão for maior para o encadeamento de execução, então, o novo encadeamento é agendado no LP secundário (que fornecerá ao mesmo o segundo maior desempenho).
[00217] Em uma modalidade, quando a eficiência de energia é selecionada como o fator determinante, as mesmas técnicas, conforme descritas acima, são implantadas para determinar o processador lógico para o novo encadeamento, porém, com o uso dos dados de classe de eficiência a partir da tabela global 1740 em vez dos dados de classe de desempenho. Por exemplo, em 1802, o índice do novo encadeamento (I) é usado para buscar um processador lógico livre na classe de eficiência associada ao novo encadeamento. Se houver um processador lógico ocioso com o maior valor de eficiência, determinado em 1803, então, o novo encadeamento é agendado no processador lógico ocioso em 1810. Se não houver, então, em 1805, um processador lógico secundário é identificado em 1805. Por exemplo, o agendador pode buscar pela coluna na tabela global 1740 para identificar o processador lógico que tem o segundo valor de melhor eficiência. Então, em 1806, uma avaliação é realizada para determinar a possibilidade de migrar quaisquer encadeamentos de execução de um processador lógico que seria um LP de maior eficiência para o novo encadeamento a um diferente processador lógico para abrir espaço para o novo encadeamento. Para render essa decisão, as razões de eficiência podem ser determinadas, conforme descrito acima para o desempenho:
[00218] Valor Comparativo de Novo Encadeamento = Effmaior novo encadeamento/Effnovo encadeamento alternativo
[00219] Valor Comparativo de Encadeamento de Execução = Effmaior encadeamento de execução/Effencadeamento de execução alternativo
[00220] Com relação ao desempenho, o encadeamento com o maior índice é executado no processador lógico de maior eficiência, enquanto o outro encadeamento é executado em (ou migrado para) um processador lógico alternativo.
[00221] A análise acima pode ser realizada para alocar e migrar encadeamentos nas classes de desempenho e eficiência iguais ou diferentes. Se o novo encadeamento tem um diferente índice de classe como os outros encadeamentos em processadores lógicos ocupados, então, a razão de desempenho ou eficiência é determinada com o uso do maior valor de desempenho ou eficiência sobre o próximo maior valor de desempenho ou eficiência para cada um dos encadeamentos atualmente executados e/ou novos encadeamentos a serem agendados. Esses encadeamentos com as maiores razões são, então, alocados nos processadores lógicos de maior desempenho ou eficiência enquanto os outros são agendados nos (ou migrados para os) próximos processadores lógicos de melhor desempenho ou eficiência.
[00222] Em uma modalidade, de modo a migrar um encadeamento de execução, a razão do novo encadeamento deve ser maior que o encadeamento de execução em uma quantidade limite especificada. Em uma modalidade, esse valor limite é selecionado com base na quantidade de sobrecarga necessária para migrar o encadeamento de execução para o novo processador lógico (por exemplo, os recursos de processamento, energia e tempo consumido pela migração). Isso assegura que se a razão do novo encadeamento for apenas levemente maior que aquela do encadeamento de execução, então, o encadeamento de execução não será migrado.
[00223] Em uma modalidade, o agendador 1710 realiza uma análise de alocação de encadeamento periodicamente (por exemplo, a cada 15 ms, 20 ms, etc.) para realizar as comparações de desempenho e/ou eficiência acima. Se uma opção de eficiência de energia melhorada ou desempenho superior estiver disponível, então, serão migrados um ou mais encadeamentos entre processadores lógicos para alcançar essa opção de eficiência superior ou desempenho superior.
[00224] Algumas implantações de agendamento existentes fornecem uma visão global das características de desempenho e energia de diferentes tipos de núcleo/processador. No entanto, essas implantações assumem o mesmo nível de IPCs grandes/pequenos e tomam o valor mediano de todos os traços possíveis enquanto ignoram as diferenças reais entre diferentes tipos de encadeamentos de software. As modalidades da invenção abordam essa limitação considerando-se essas diferenças.
[00225] No relatório descritivo mencionado anteriormente, as modalidades da invenção foram descritas com referência a modalidades exemplificas específicas da mesma. Será evidente, entretanto, que várias modificações e mudanças podem ser feitas à mesma sem que se desvie do espírito e escopo mais amplos da invenção conforme estabelecidos nas reivindicações anexas. O relatório descritivo e desenhos devem, consequentemente, ser considerados em um sentido ilustrativo ao invés de restritivo.
EXEMPLOS
[00226] Os seguintes são implantações exemplificativas de diferentes modalidades da invenção.
[00227] Exemplo 1. Processador que compreende: uma pluralidade de processadores lógicos que incluem pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo; um agendador para agendar uma pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos; sendo que, quando os dados de desempenho indicam que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, o agendador é para determinar a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação do terceiro e quarto valores de desempenho associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
[00228] Exemplo 2. Processador, de acordo com o Exemplo 1, em que o agendador é para migrar o segundo encadeamento quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
[00229] Exemplo 3. Processador, de acordo com o Exemplo 2, em que o agendador é para agendar o novo encadeamento em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
[00230] Exemplo 4. Processador, de acordo com o Exemplo 1, em que o agendador é para determinar, adicionalmente, a possibilidade de migrar um ou mais encadeamentos adicionais que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
[00231] Exemplo 5. Processador, de acordo com o Exemplo 1, em que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
[00232] Exemplo 6. Processador, de acordo com o Exemplo 1, em que o agendador é para agendar a pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e é para agendar a pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
[00233] Exemplo 7. Processador, de acordo com o Exemplo 6, em que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, o agendador para determinar a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação de terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
[00234] Exemplo 8. Processador, de acordo com o Exemplo 1, que compreende adicionalmente: uma tabela global acoplada ao agendador, sendo que a tabela global é para armazenar dados de desempenho que incluem o primeiro, segundo, terceiro e quarto dados de desempenho avaliados pelo agendador para agendar a pluralidade de encadeamentos.
[00235] Exemplo 9. Processador, de acordo com o Exemplo 8, que compreende adicionalmente: um gerenciador de tabela para avaliar características de execução da pluralidade de encadeamentos quando executados em processadores lógicos do primeiro e segundo tipos de processador lógico e para atualizar responsivamente os dados de desempenho na tabela global.
[00236] Exemplo 10. Método que compreende: agendar uma pluralidade de encadeamentos para execução em uma pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos, sendo que a pluralidade de processadores lógicos inclui pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo; determinar, com base nos dados de desempenho, que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados; avaliar primeiro e segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; avaliar terceiro e quarto valores de desempenho associados à execução de um segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; e determinar a possibilidade de migrar o segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base na avaliação do primeiro e segundo valores de desempenho e do terceiro e quarto valores de desempenho.
[00237] Exemplo 11. Método, de acordo com o Exemplo 10, em que o segundo encadeamento deve ser migrado quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
[00238] Exemplo 12. Método, de acordo com o Exemplo 11, em que o primeiro encadeamento deve ser agendado em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
[00239] Exemplo 13. Método, de acordo com o Exemplo 10, que compreende adicionalmente: determinar a possibilidade de migrar um ou mais encadeamentos adicionais exemplificativos que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
[00240] Exemplo 14. Método, de acordo com o Exemplo 10, em que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
[00241] Exemplo 15. Método, de acordo com o Exemplo 10, em que a pluralidade de encadeamentos devem ser agendados para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e devem ser agendados para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
[00242] Exemplo 16. Método, de acordo com o Exemplo 15, em que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, então: determina a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do primeiro encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação de terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
[00243] Exemplo 17. Método, de acordo com o Exemplo 10, que compreende adicionalmente: ler os dados de desempenho que incluem o primeiro, segundo, terceiro e quarto dados de desempenho de uma tabela global.
[00244] Exemplo 18. Método, de acordo com o Exemplo 17, que compreende adicionalmente: avaliar as características de execução da pluralidade de encadeamentos quando executados em processadores lógicos do primeiro e segundo tipos de processador lógico; e atualizar, responsivamente, os dados de desempenho na tabela global.
[00245] Exemplo 19. Mídia legível por máquina que tem código de programa armazenado na mesma, que, quando executado por uma máquina, faz a máquina realizar as operações de: agendar uma pluralidade de encadeamentos para execução em uma pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos, sendo que a pluralidade de processadores lógicos inclui pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo; determinar, com base nos dados de desempenho, que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados; avaliar primeiro e segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; avaliar terceiro e quarto valores de desempenho associados à execução de um segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; e determinar a possibilidade de migrar o segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base na avaliação do primeiro e segundo valores de desempenho e do terceiro e quarto valores de desempenho.
[00246] Exemplo 20. Mídia legível por máquina, de acordo com o Exemplo 19, em que o segundo encadeamento deve ser migrado quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
[00247] Exemplo 21. Mídia legível por máquina, de acordo com o Exemplo 20, em que o primeiro encadeamento deve ser agendado em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
[00248] Exemplo 22. Mídia legível por máquina, de acordo com o Exemplo 19, que compreende adicionalmente: determinar a possibilidade de migrar um ou mais encadeamentos adicionais que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
[00249] Exemplo 23. Mídia legível por máquina, de acordo com o Exemplo 19, em que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
[00250] Exemplo 24. Mídia legível por máquina, de acordo com o Exemplo 19, em que a pluralidade de encadeamentos devem ser agendados para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e devem ser agendados para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
[00251] Exemplo 25. Mídia legível por máquina, de acordo com o Exemplo 24, em que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém, todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, então: determina a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do primeiro encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação de terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
[00252] Exemplo 26. Mídia legível por máquina, de acordo com o Exemplo 19, que compreende adicionalmente: ler os dados de desempenho que incluem o primeiro, segundo, terceiro e quarto dados de desempenho de uma tabela global.
[00253] Exemplo 27. Mídia legível por máquina, de acordo com o Exemplo 26, que compreende adicionalmente: avaliar as características de execução da pluralidade de encadeamentos quando executados em processadores lógicos do primeiro e segundo tipos de processador lógico; e atualizar, responsivamente, os dados de desempenho na tabela global.
[00254] As modalidades da invenção podem incluir várias etapas que foram descritas acima. As etapas podem ser incorporadas em instruções executáveis por máquina que podem ser usadas para causar um processador de propósito genérico ou processador de propósito específico para realizar as etapas. De modo alternativo, essas etapas podem ser realizadas por componentes de hardware específicos que contêm lógica embutida em hardware para realizar as etapas, ou por qualquer combinação de componentes de computador programados e componentes de hardware personalizados.
[00255] Se VMM permite suporte para as técnicas de agendamento adaptativas descritas no presente documento, o mesmo pode, então, fornecer esse suporte a qualquer VM capaz. O VMM também pode virtualizar e permitir o suporte para as técnicas de agendamento adaptativas e a configuração de nível de encadeamento necessária. Em uma implantação na qual a tabela global 1740 é dinâmica, o VMM virtualiza a Tabela e atualiza as colunas apropriadas da tabela virtual dinamicamente. Em uma modalidade na qual o VM permite o comando de optar incluir da reinicialização de histórico por qualquer WRMSR de IA32_KERNEL_GL_BASE MSR. Se o VMM emula esse MSR por meio de virtualização, dependerá do VM reiniciar o histórico por meio da opção de reinicialização de MSR de configuração de nível de encadeamento (bit 2) como parte da emulação desse MSR. Como parte de uma comutação de contexto de VM, o VMM reinicia o histórico manualmente por meio da opção de reinicialização de MSR de configuração de nível de encadeamento (bit 2).
[00256] Conforme descrito no presente documento, as instruções podem se referir a configurações específicas de hardware como circuitos integrados de aplicação específica (ASICs) configurados para realizar determinadas operações ou que têm uma funcionalidade predeterminada ou instruções de software armazenadas na memória empregada em um meio legível por computador não transitório. Dessa forma, as técnicas mostradas nas Figuras podem ser implantadas com uso de código e dados armazenados e executados em um ou mais dispositivos eletrônicos (por exemplo, uma estação final, um elemento de rede, etc.). Esses dispositivos eletrônicos armazenam e comunicam (internamente e/ou com outros dispositivos eletrônicos em uma rede) código e dados com uso de mídia de computador legível por máquina, como mídia de armazenamento de computador não transitória legível por máquina (por exemplo, discos magnéticos; discos ópticos; memória de acesso aleatório; memória somente de leitura; dispositivos de memória rápida; memória de mudança de fase) e mídia de comunicação de computador transitória legível por máquina (por exemplo, forma elétrica, óptica, acústica ou outra forma de sinais propagados, como ondas transportadoras, sinais infravermelhos, sinais digitais, etc.). Adicionalmente, esses dispositivos eletrônicos tipicamente incluem um conjunto de um ou mais processadores acoplados a um ou mais outros componentes, como um ou mais dispositivos de armazenamento (mídia de armazenamento não transitória legível por máquina), dispositivos de entrada/saída de usuário (por exemplo, um teclado, uma tela sensível ao toque, e/ou um visor) e conexões de rede. O acoplamento do conjunto de processadores e outros componentes é tipicamente através de um ou mais barramentos e pontes (também chamados de controladores de barramento). O dispositivo de armazenamento e os sinais que carregam o tráfego de rede, respectivamente, representam uma ou mais mídias de armazenamento legíveis por máquina e mídias de comunicação legíveis por máquina. Dessa forma, o dispositivo de armazenamento de um determinado dispositivo eletrônico tipicamente armazena código e/ou dados para execução no conjunto de um ou mais processadores desse dispositivo eletrônico. É evidente que uma ou mais partes de uma modalidade da invenção podem ser implantadas com uso de combinações diferentes de software, firmware e/ou hardware. Na descrição a seguir, para os propósitos de explicação, diversos detalhes específicos são apresentados a fim de fornecer um entendimento completo da presente invenção. Será evidente, no entanto, para uma pessoa versada na técnica que a invenção pode ser praticada sem parte desses detalhes específicos. Em determinados casos, as estruturas e funções bem conhecidas não foram descritas com mais detalhes a fim de evitar obscurecer a matéria da presente invenção. Consequentemente, o escopo e o espírito da invenção devem ser interpretados em termos das reivindicações que seguem.

Claims (25)

  1. Processador caracterizado por compreender:
    uma pluralidade de processadores lógicos que incluem pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo;
    um agendador para agendar uma pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos;
    sendo que, quando os dados de desempenho indicam que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, o agendador determina a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação de terceiro e quarto valores de desempenho associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
  2. Processador, de acordo com a reivindicação 1, caracterizado pelo fato de que o agendador é para migrar o segundo encadeamento quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
  3. Processador, de acordo com a reivindicação 2, caracterizado pelo fato de que o agendador é para agendar o novo encadeamento em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
  4. Processador, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o agendador é para determinar, adicionalmente, a possibilidade de migrar um ou mais encadeamentos adicionais que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
  5. Processador, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
  6. Processador, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o agendador é para agendar a pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e é para agendar a pluralidade de encadeamentos para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
  7. Processador, de acordo com a reivindicação 6, caracterizado pelo fato de que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, o agendador determina a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação de terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
  8. Processador, de acordo com qualquer uma das reivindicações de 1 a 7, caracterizado pelo fato de que compreende adicionalmente:.
    uma tabela global acoplada ao agendador, sendo que a tabela global é para armazenar dados de desempenho que incluem o primeiro, segundo, terceiro e quarto dados de desempenho avaliados pelo agendador para agendar a pluralidade de encadeamentos.
  9. Processador, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende adicionalmente:
    um gerenciador de tabela para avaliar características de execução da pluralidade de encadeamentos quando executados em processadores lógicos do primeiro e segundo tipos de processador lógico e para atualizar responsivamente os dados de desempenho na tabela global.
  10. Método caracterizado por compreender:
    agendar uma pluralidade de encadeamentos para execução em uma pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos, sendo que a pluralidade de processadores lógicos incluem pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo;
    determinar, com base nos dados de desempenho, que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados;
    avaliar o primeiro e o segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente;
    avaliar o terceiro e o quarto valores de desempenho associados à execução de um segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; e
    determinar a possibilidade de migrar o segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base na avaliação do primeiro e segundo valores de desempenho e do terceiro e quarto valores de desempenho.
  11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o segundo encadeamento deve ser migrado quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
  12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o primeiro encadeamento deve ser agendado em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
  13. Método, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de que compreende adicionalmente:
    determinar a possibilidade de migrar um ou mais encadeamentos adicionais que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
  14. Método, de acordo com qualquer uma das reivindicações 10 a 13, caracterizado pelo fato de que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
  15. Método, de acordo com qualquer uma das reivindicações 10 a 14, caracterizado pelo fato de que a pluralidade de encadeamentos devem ser agendados para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e devem ser agendados para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
  16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, então:
    determinar a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do primeiro encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação do terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
  17. Método, de acordo com qualquer uma das reivindicações 10 a 16, caracterizado pelo fato de que compreende adicionalmente:
    ler os dados de desempenho que incluem o primeiro, segundo, terceiro e quarto dados de desempenho de uma tabela global.
  18. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que compreende adicionalmente:
    avaliar características de execução da pluralidade de encadeamentos quando executados nos processadores lógicos do primeiro e segundo tipos de processador lógico; e
    atualizar responsivamente os dados de desempenho na tabela global.
  19. Mídia legível por máquina caracterizada por ter código de programa armazenado na mesma, que, quando executado por uma máquina, faz a máquina realizar as operações de:
    agendar uma pluralidade de encadeamentos para execução em uma pluralidade de processadores lógicos de acordo com dados de desempenho associados à pluralidade de encadeamentos, sendo que a pluralidade de processadores lógicos incluem pelo menos um processador lógico de um primeiro tipo de processador lógico e pelo menos um processador lógico de um segundo tipo de processador lógico, sendo que o primeiro tipo de processador lógico é associado a um primeiro tipo de núcleo e o segundo tipo de processador lógico é associado a um segundo tipo de núcleo;
    determinar, com base nos dados de desempenho, que um novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados;
    avaliar o primeiro e o segundo valores de desempenho associados à execução do novo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente;
    avaliar o terceiro e o quarto valores de desempenho associados à execução de um segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente; e
    determinar a possibilidade de migrar o segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base na avaliação do primeiro e segundo valores de desempenho e do terceiro e quarto valores de desempenho.
  20. Mídia legível por máquina, de acordo com a reivindicação 19, caracterizada pelo fato de que o segundo encadeamento deve ser migrado quando uma primeira razão do primeiro e segundo valores de desempenho é maior que uma segunda razão do segundo e terceiro valores de desempenho.
  21. Mídia legível por máquina, de acordo com a reivindicação 20, caracterizada pelo fato de que o primeiro encadeamento deve ser agendado em um processador lógico do segundo tipo de processador lógico quando a segunda razão é maior que a primeira razão.
  22. Mídia legível por máquina, de acordo com qualquer uma das reivindicações 19 a 21, caracterizada pelo fato de que compreende adicionalmente:
    determinar a possibilidade de migrar um ou mais encadeamentos adicionais que são executados nos processadores lógicos do primeiro tipo de processador lógico com base em uma avaliação de valores de desempenho associados à execução do um ou mais encadeamentos adicionais no primeiro e segundo tipos de processador lógico.
  23. Mídia legível por máquina, de acordo com qualquer uma das reivindicações 19 a 22, caracterizada pelo fato de que o primeiro tipo de processador lógico compreende uma porção especificada do primeiro tipo de núcleo e em que o segundo tipo de processador lógico compreende um núcleo inteiro do segundo tipo.
  24. Mídia legível por máquina, de acordo com qualquer uma das reivindicações 19 a 23, caracterizada pelo fato de que a pluralidade de encadeamentos devem ser agendados para execução na pluralidade de processadores lógicos de acordo com os dados de desempenho associados à pluralidade de encadeamentos quando em um primeiro modo operacional e devem ser agendados para execução na pluralidade de processadores lógicos de acordo com dados de eficiência associados à pluralidade de encadeamentos quando em um segundo modo operacional.
  25. Mídia legível por máquina, de acordo com a reivindicação 24, caracterizada pelo fato de que, quando os dados de eficiência indicam que o novo encadeamento deve ser executado em um processador lógico do primeiro tipo de processador lógico, porém todos os processadores lógicos do primeiro tipo de processador lógico estão ocupados, então:
    determinar a possibilidade de migrar um segundo encadeamento dos processadores lógicos do primeiro tipo de processador lógico para um processador lógico do segundo tipo de processador lógico com base em uma avaliação do primeiro e segundo valores de eficiência associados à execução do primeiro encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente, e adicionalmente com base em uma avaliação do terceiro e quarto valores de eficiência associados à execução do segundo encadeamento no primeiro ou segundo tipos de processador lógico, respectivamente.
BR102020019649-9A 2019-12-27 2020-09-25 aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo BR102020019649A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/728,617 2019-12-27
US16/728,617 US11436118B2 (en) 2019-12-27 2019-12-27 Apparatus and method for adaptively scheduling work on heterogeneous processing resources

Publications (1)

Publication Number Publication Date
BR102020019649A2 true BR102020019649A2 (pt) 2021-06-29

Family

ID=76310528

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102020019649-9A BR102020019649A2 (pt) 2019-12-27 2020-09-25 aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo

Country Status (6)

Country Link
US (1) US11436118B2 (pt)
KR (2) KR20210086448A (pt)
CN (2) CN113050991A (pt)
BR (1) BR102020019649A2 (pt)
DE (1) DE102020128808A1 (pt)
TW (2) TW202307669A (pt)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114035928A (zh) * 2021-11-26 2022-02-11 重庆富民银行股份有限公司 分布式任务分配处理方法
CN114827033A (zh) * 2022-04-15 2022-07-29 咪咕文化科技有限公司 数据流控方法、装置、设备与计算机可读存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
KR20230011857A (ko) * 2021-07-14 2023-01-25 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
US20230040310A1 (en) * 2021-08-03 2023-02-09 Apple Inc. Cpu cluster shared resource management
CN113688203B (zh) * 2021-08-12 2023-07-28 北京航空航天大学 一种基于可迁移异构图的多语言事件检测方法
KR20230106865A (ko) 2022-01-07 2023-07-14 울산과학기술원 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
CN116932230B (zh) * 2023-09-15 2023-12-08 湖南马栏山视频先进技术研究院有限公司 一种基于动态任务调度的视频渲染方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996839B2 (en) * 2003-07-16 2011-08-09 Hewlett-Packard Development Company, L.P. Heterogeneous processor core systems for improved throughput
US8793686B2 (en) * 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
US9329900B2 (en) * 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114035928A (zh) * 2021-11-26 2022-02-11 重庆富民银行股份有限公司 分布式任务分配处理方法
CN114827033A (zh) * 2022-04-15 2022-07-29 咪咕文化科技有限公司 数据流控方法、装置、设备与计算机可读存储介质
CN114827033B (zh) * 2022-04-15 2024-04-19 咪咕文化科技有限公司 数据流控方法、装置、设备与计算机可读存储介质

Also Published As

Publication number Publication date
CN113050991A (zh) 2021-06-29
US20210200656A1 (en) 2021-07-01
KR20210086448A (ko) 2021-07-08
CN115858016A (zh) 2023-03-28
TW202143044A (zh) 2021-11-16
DE102020128808A1 (de) 2021-07-01
US11436118B2 (en) 2022-09-06
KR20220151134A (ko) 2022-11-14
TW202307669A (zh) 2023-02-16

Similar Documents

Publication Publication Date Title
BR102020019649A2 (pt) aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo
US11989555B2 (en) Instructions for remote atomic operations
JP6143872B2 (ja) 装置、方法、およびシステム
BR102020019657A2 (pt) aparelhos, métodos e sistemas para instruções de um acelerador de operações de matriz
US10503550B2 (en) Dynamic performance biasing in a processor
US11755442B2 (en) Apparatus and method for multithreading-aware performance monitoring events
WO2017172354A1 (en) Hardware apparatuses and methods for memory performance monitoring
CN110647291A (zh) 硬件辅助的页面调度机制
US20140095828A1 (en) Vector move instruction controlled by read and write masks
KR20190114745A (ko) 체인화된 타일 연산들을 구현하기 위한 시스템들 및 방법들
US20140325184A1 (en) Mechanism for saving and retrieving micro-architecture context
US11886918B2 (en) Apparatus and method for dynamic control of microprocessor configuration
JP2020004394A (ja) データ表現間の一貫性のある変換を加速する装置および方法
WO2013147866A1 (en) System and method for real time instruction tracing
US20210208990A1 (en) Apparatus and method for generating performance monitoring metrics
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
CN108292253B (zh) 用于芯片上可靠性控制器的设备和方法
CN113204448A (zh) 用于请求处理器核的历史重置的指令的设备、方法和系统
BR102016012096A2 (pt) Hardware apparatus to improve performance of state dependent computers
CN112579158A (zh) 用于处理器非写回能力的装置、方法和系统
US20160170767A1 (en) Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
WO2019133091A1 (en) Apparatus and method for vectored machine check bank reporting
BR102020019550A2 (pt) Processador de hardware e método
CN111512309A (zh) 用于抵抗交叉特权线性探查的系统、方法和装置

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]