BR0010602B1 - método de execução de uma operação de comutação de tarefa em um processador multitarefas. - Google Patents

método de execução de uma operação de comutação de tarefa em um processador multitarefas. Download PDF

Info

Publication number
BR0010602B1
BR0010602B1 BRPI0010602-0A BR0010602A BR0010602B1 BR 0010602 B1 BR0010602 B1 BR 0010602B1 BR 0010602 A BR0010602 A BR 0010602A BR 0010602 B1 BR0010602 B1 BR 0010602B1
Authority
BR
Brazil
Prior art keywords
task
instruction information
instruction
instructional
dispatch
Prior art date
Application number
BRPI0010602-0A
Other languages
English (en)
Other versions
BR0010602A (pt
Inventor
Stavros Kalafatis
Alan B Kyker
Robert D Fisch
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 filed Critical
Publication of BR0010602A publication Critical patent/BR0010602A/pt
Publication of BR0010602B1 publication Critical patent/BR0010602B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO DE EXECUÇÃO DE UMA OPERAÇÃO DE COMUTAÇÃO DE TAREFA EM UM PROCESSADOR MULTITAREFAS".
CAMPO DA INVENÇÃO A presente invenção refere-se, em geral, ao campo de proces-
sadores de tarefas múltiplas e, mais especificamente, a um método e a um aparelho para a execução de uma comutação de contexto (ou de tarefa) em um processador de múltiplas tarefas. ANTECEDENTES DA INVENÇÃO O projeto de um processador de múltiplas tarefas, recentemente,
foi considerado uma opção crescentemente atraente para o aumento da per- formance de processadores. Uma múltipla tarefa em um processador, entre outras coisas, provê o potencial para uma utilização mais efetiva de vários recursos do processador, e, particularmente, para uma utilização mais efeti- va da lógica de execução em um processador. Especificamente, alimentan- do-se múltiplas tarefas para a lógica de execução de um processador, ciclos de clock que, de outra forma, teriam estado inativos devido a uma parada ou a um outro atraso no processamento de uma tarefa em particular, podem ser utilizados para servirem a uma outra tarefa. Uma parada no processamento de uma tarefa em particular pode resultar de várias ocorrências em um en- cadeamento de processador. Por exemplo, uma perda de cache ou uma má previsão de ramificação (isto é, uma operação de longa latência) para uma instrução incluída em uma tarefa, tipicamente, resulta no processamento da parada de tarefa relevante. O efeito negativo de operações de longa latência sobre as eficiências de lógica de execução é exacerbado pelos recentes aumentos na produção da lógica de execução que superaram os avanços de acesso de memória e taxas de recuperação.
As aplicações de computador de múltiplas tarefas também estão se tornando crescentemente comuns, tendo em vista o suporte provido para essas aplicações por vários sistemas operacionais populares, tais como o Windows NT® e o Unix. As aplicações de computador de múltiplas tarefas são particularmente eficientes na arena de multimídia. Os processadores de tarefa múltipla podem ser classificados, amplamente, em duas categorias (isto é, projetos finos ou grosseiros), de acordo com o entrelaçamento de tarefa ou com o esquema de comutação empregado no processador relevante. Os projetos finos de tarefa múltipla suportam múltiplas tarefas ativas em um processador e, tipicamente, entre- laçam duas tarefas diferentes quando da ocorrência de algum evento de Ia- tência longa, tal como uma perda de cache. Um projeto grosseiro de tarefa múltipla é discutido em Eickemayer, R.; Johnson, R.; et al., "Evaluation of Multithreaded Uniprocessor for Commercial Application Environments", The 23rd Annual International Svmposium on Computer Architecture, pp. 203- 212, maio de 1996. As distinções entre projetos finos e grosseiros são adi- cionalmente discutidas em Laudon, J; Gupta, A, "Architectural and Imple- mentation Tradeoffs in the Design of Multiple-Context Processors", Multithre- aded Computer Architectures: A Summarv of the State of the Art, edita por R.A. Iannuci et al., pp. 167-200, KIuwerAcademic Publishers, Norwell, Mas- sachusetts, 1994 Laudon ainda propõe um esquema de entrelaçamento que combina a comutação ciclo a ciclo de um projeto fino com os intertravamen- tos de encadeamento completo de um projeto grosseiro (ou esquema blo- queado). Para essa finalidade, Laudon propõe uma instrução de "retroação", que torna uma tarefa específica (ou contexto) não disponível por um número específico de ciclos. Essa instrução de "retroação" pode ser emitida quando da ocorrência de eventos predeterminados, tal como uma perda de cache. Desta forma, Laudon evita ter de executar uma comutação de tarefa real, simplesmente tornando uma das tarefas não disponível. SUMÁRIO DA INVENÇÃO
De acordo com a presente invenção, é provido um método de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas. O despacho de uma primeira quantidade predeterminada de informação de instrução para uma primeira tarefa, a partir de uma fonte de informação de instrução no processador de múltiplas tarefas, é detectado. Em resposta à detecção do despacho da primeira quantidade predetermina- da de informação de instrução para a primeira tarefa, o despacho da infor- mação de instrução para uma segunda tarefa a partir da fonte de informação de instrução é começado.
Outros aspectos da presente invenção serão aparentes a partir das figuras em anexo e da descrição detalhada que se segue.
BREVE DESCRIÇÃO DAS FIGURAS
A presente invenção é ilustrada, a título de exemplo e não de limitação, nas figuras dos desenhos em anexo, nas quais números de refe- rência indicam elementos similares e nas quais:
A Figura 1 é um diagrama de blocos que ilustra um encadea- mento de exemplo de um processador, no qual a presente invenção pode ser implementada.
A Figura 2 é um diagrama de blocos que ilustra uma concretiza- ção exemplificatória de um processador, na forma de um microprocessador de múltiplas tarefas de finalidade geral, no qual a presente invenção pode ser implementada.
A Figura 3 é um diagrama de blocos provendo detalhes adicio- nais referentes à arquitetura de uma concretização exemplificatória de um agente de tradução de microinstrução incluído no microprocessador de fina- lidade geral ilustrado na Figura 2. A Figura 4 é um diagrama de blocos que ilustra os componentes
selecionados de um microprocessador de múltiplas tarefas de exemplo e, especificamente, descreve várias unidades funcionais que provêem uma capacidade de armazenamento temporário como sendo logicamente de par- tição, para a acomodação de múltiplas tarefas. A Figura 5 é um diagrama de blocos que ilustra detalhes adicio-
nais referentes à estrutura e à arquitetura de um buffer de fluxo de instrução exemplar, de acordo com uma concretização da presente invenção.
A Figura 6 é um diagrama de blocos que ilustra os componentes lógicos da lógica de controle de comutação de tarefa, de acordo com uma concretização exemplificatória da presente invenção.
A Figura 7 é um fluxograma que ilustra o método, de acordo com uma concretização exemplificatória da presente invenção, e determinação de uma tarefa de começo, quando múltiplas tarefas em um processador de múltiplas tarefas estão inativas.
A Figura 8 é um fluxograma de um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas no despacho de uma instrução de ramificação de uma tarefa corrente a partir de uma fonte de instrução.
A Figura 9 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas na ocorrência de uma parada de latência longa.
A Figura 10 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas na ocorrência de uma eliminação de encadeamento interno.
A Figura 11 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas na ocorrência de uma condição de "nenhum fluxo de dados" em rela- ção a uma tarefa específica.
A Figura 12 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas no despacho de uma quantidade predeterminada de informação de instrução para uma tarefa específica a partir de um buffer de fluxo de instru- ção para um pré-codificador de instrução.
A Figura 13 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas na ocorrência de uma eliminação de encadeamento externo.
A Figura 14 é um fluxograma que ilustra um método, de acordo com uma concretização exemplificatória da presente invenção, de execução de uma operação de comutação de tarefa em um processador de múltiplas tarefas quando da detecção de um fluxo inserido em um fluxo de instrução para uma tarefa corrente.
As Figuras 15A e 15B são ilustrações esquemáticas que mos- tram a estrutura das respectivas concretizações exemplificatórias da lógica de controle de comutação de tarefa, de acordo com a presente invenção, ilustrada em forma de diagrama de blocos na Figura 6.
A Figura 16 é uma ilustração esquemática de uma lógica, de acordo com uma concretização exemplificatória da presente invenção, para a inserção de um marcador de fluxo (ou fluxo inserido) em um fluxo de ins- trução.
DESCRIÇÃO DETALHADA
Um método e um aparelho para a comutação de tarefa em um processador de múltiplas tarefas são descritos. Na descrição a seguir, para fins de explanação, numerosos detalhes específicos são estabelecidos, de modo a se prover uma compreensão completa da presente invenção. Será evidente, entretanto, para uma pessoa versada na técnica, que a presente invenção pode ser praticada sem esses detalhes específicos.
Para as finalidades do presente relatório descritivo, o termo "despacho" deve ser tomado como envolvendo o envio real ou a propagação de dados de um local ou de uma unidade funcional, bem como as medidas que são tomadas na preparação para o envio ou para a propagação real de dados. Por exemplo, o termo "despacho" deve ser feito incluir a colocação de dados em uma ordem ou estado em particular de prontidão para serem propagados a partir de um local de armazenamento ou de um buffer. Encadeamento de Processador
A Figura 1 é um diagrama de blocos de alto nível que ilustra uma concretização exemplificatória de um encadeamento de processador 10, no qual a presente invenção pode ser implementada. Para as finalidades do presente relatório descritivo, o termo "processador" deve ser considerado como se referindo a qualquer máquina que seja capaz de executar uma se- qüência de instruções (por exemplo, macro ou microinstruções), e deve ser considerado como incluindo, mas não limitado a microprocessadores de fina- lidade geral, microprocessadores de finalidade especial, controladores gráfi- cos, controlados de áudio, controladores de multimídia e microcontroladores. Ainda, o termo "processador" deve ser considerado como se referindo a, entre outras coisas, Computadores de Regulagem de Instrução Complexa (CISC), Computadores de Regulagem de Instrução Reduzida (RISC) ou pro- cessadores de Palavra de Instrução Muito Longa (VLIW). O encadeamento inclui vários estágios de canal, começando com um estágio de canal de busca 12, no qual instruções (por exemplo, macroinstruções) são recupera- das e alimentadas para o encadeamento 10. Por exemplo, uma macroinstru- ção pode ser recuperada a partir de uma memória cache que seja integral com o processador, ou proximamente associada a ele, ou pode ser recupe- rada a partir de uma memória principal externa através de um barramento de processador. A partir do estágio de canal de busca 12, as macroinstruções são propagadas para um estágio de canal de decodificação 14, onde as ma- croinstruções são traduzidas em microinstruções (também denominadas "microcódigo") adequadas para execução no processador. As microinstru- ções são, então, propagadas em fluxo normal para um estágio de canal de alocação 16, onde os recursos do processador são alocados para as várias microinstruções, de acordo com a disponibilidade e com a necessidade. As microinstruções são, então, executadas em um estágio de execução 18, an- tes de serem retiradas em um estágio de canal de retirada 20. Arquitetura de Microprocessador
A Figura 2 é um diagrama de blocos que ilustra uma concretiza- ção exemplificatória de um processador, na forma de um microprocessador de finalidade geral 30, no qual a presente invenção pode ser implementada. O microprocessador 30 é descrito abaixo como sendo um processador de múltiplas tarefas (MT) e, assim sendo, é capaz de simultaneamente proces- sar múltiplas tarefas de instrução (ou contextos). Entretanto, vários dos ensi- namentos providos abaixo no relatório descritivo não são específicos para um processador de múltiplas tarefas, e podem encontrar aplicação em um processador de tarefa única. Em uma concretização exemplificatória, o mi- croprocessador 30 pode compreender um microprocessador de Arquitetura Intel (IA), que é capaz de executar o conjunto de instruções da Arquitetura Intel.
O microprocessador 30 compreende uma extremidade dianteira em ordem e uma extremidade traseira fora de ordem. A extremidade diantei- ra em ordem inclui uma unidade de interface de barramento 32, a qual fun- ciona como o conduto entre o microprocessador 30 e os outros componen- tes (por exemplo, a memória principal) de um sistema computacional, no qual o microprocessador 30 pode ser empregado. Para essa finalidade, a unidade de interface de barramento 32 acopla o microprocessador 30 a um barramento de processador (não mostrado), através do qual dados de uma informação de controle podem ser recebidos e propagados a partir do micro- processador 30. A unidade de interface de barramento 32 inclui uma lógica de Barramento de Lado Dianteiro (FSB) 34, que controla as comunicações pelo barramento de processador. A unidade de interface de barramento 32 ainda inclui uma fila de barramento 36, que provê uma função de armaze- namento temporário em relação às comunicações pelo barramento de pro- cessador. A unidade de interface de barramento 32 é mostrada como rece- bendo requisições de barramento 38 de e para o envio de "snoops" ou de retornos de barramento para uma unidade de execução de memória 42, que provê uma capacidade de memória local no microprocessador 30. A unidade de execução de memória 42 inclui um cache de dados e de instrução unifi- cado 44, um Buffer de Procura a Parte de Tradução (TLB) 46 e uma lógica de ordenação de memória 48. A unidade de execução de memória 42 rece- be requisições de busca de instrução 50 de e envia instruções brutas 52 (isto é, macroinstruções codificadas) para um agente de tradução de microinstru- ção 54, que traduz as macroinstruções recebidas em um conjunto corres- pondente de microinstruções. Os detalhes adicionais referentes ao agente de tradução de microinstrução 54 são providos abaixo. A partir do agente de tradução de microinstrução 54, instruções
decodificadas (isto é, microinstruções) são enviadas para um agente de en- vio de traço 60. O agente de envio de traço 60 inclui um cache de traço 62, um previsor de ramificação de traço (BTB) 64, um seqüenciador de microcó- digo 66 e uma fila de microcódigo (uop) 68. O agente de envio de traço 60 funciona como um cache de microinstrução, e é a fonte primária de microins- truções para uma unidade de execução em fluxo normal 70. Pela provisão de uma função de cache de microinstrução no encadeamento do processa- dor, o agente de envio de traço 60 e, especificamente, o cache de traço 62 permitem que um trabalho de tradução feito pelo agente de tradução de mi- croinstrução 54 seja alavancado, para a provisão de uma largura de banda de microinstrução relativamente alta. Em uma concretização exemplificató- ria, o cache de traço 62 pode compreender uma memória associada de 256 regulagens, 8 vias de regulagem. O termo "traço" na presente concretização exemplificatória pode se referir a uma seqüência de microinstruções arma- zenada em entradas do cache de traço 62, cada entrada incluindo ponteiros para as microinstruções precedentes e seguintes, compreendendo o traço. Desta forma, o cache de traço 62 facilita uma formação de seqüência de alta performance, pelo fato de que o endereço da próxima entrada a ser acessa- do com a finalidade de se obter uma microinstrução subseqüente é conheci- do antes de um acesso atual estar completo. Os traços podem ser vistos como "blocos" de instruções, que são distinguidos uns dos outros por cabe- çalhos de traço, e são terminados quando encontram uma ramificação indi- reta ou ao atingirem uma das muitas condições de limite presentes, tal como o número de ramificações condicionadas que podem ser acomodadas em um único traço ou o número máximo de microinstruções totais que podem compreender uma tendência.
O previsor de ramificação de cache de traço 64 provê previsões de ramificação local referentes a traços no cache de traço 62. O cache de traço 62 e o seqüenciador de microcódigo 66 provêem microinstruções para a fila de microcódigo 68, a partir de onde as microinstruções são, então, ali- mentadas para um agrupamento de execução fora de ordem. Assim sendo, o microprocessador 30 pode ser visto como tendo uma extremidade diantei- ra em ordem, compreendendo a unidade de interface de barramento 32, a unidade de execução de memória 42, o agente de tradução de microinstru- ção 54 e o agente de envio de traço 60, e uma extremidade traseira fora de ordem que será descrita em detalhes abaixo.
As microinstruções despachadas a partir da fila de microcódigo 68 são recebidas em um agrupamento fora de ordem 71, que compreende um escalonador 72, um renomeador de registrador 74, um alocador 76, um buffer de reordenação 78 e uma fila de reexecução 80. O escalonador 72 inclui um conjunto de estações de reserva, e opera para escalonar e despa- char microinstruções para execução pela unidade de execução em fluxo normal 70. O renomeador de registrador 74 executa uma função de renome- ação de registrador em relação a registradores de inteiro e de ponto flutuan- te escondidos (que podem ser utilizados no lugar de qualquer um dos oito registradores de finalidade geral ou de qualquer um dos oito registradores de ponto flutuante, onde um microprocessador 30 executa o conjunto de instru- ção de Arquitetura Intel). O alocador 76 opera para alocar recursos da uni- dade de execução 70 e do agrupamento 71 para microinstruções, de acordo com a disponibilidade e com a necessidade. No caso de recursos insuficien- tes estarem disponíveis para se processar uma microinstrução, o alocador 76 é responsável pela declaração de um sinal de parada 82, que é propaga- do através do agente de envio de traço 60 para o agente de tradução de mi- croinstrução 54, como mostrado em 58. As microinstruções, as quais tinham tido seus campos de fonte ajustados pelo renomeador de registrador 74, são colocadas em um buffer de reordenação 78, na ordem estrita do programa. Quando as microinstruções no buffer de reordenação 78 tiverem completado a execução e estiverem prontas para uma retirada, elas são, então, removi- das do buffer de reordenação 78. A fila de reexecução 80 propaga microins- truções que devem ser reexecutadas para a unidade de execução 70.
A unidade de execução 70 é mostrada como incluindo um agen- te de execução de ponto flutuante 84, um agente de execução de inteiro 86, e um cache de dados 88 de nível 0. Em uma concretização exemplificatória, na qual é o microprocessador 30 que executa o conjunto de instruções de Arquitetura Intel, o agente de execução de ponto flutuante 84 pode, ainda, executar instruções MMX®. Agente de Tradição de Microinstrução
A Figura 3 é um diagrama de blocos que provê detalhes adicio- nais referentes à arquitetura de uma concretização exemplificatória do agen- te de tradução de microinstrução 54. O agente de tradução de microinstru- ção 54, efetivamente, opera como um "manipulador de perda" de cache de traço, pelo fato de que ele opera para enviar microinstruções para o cache de traço 62, no caso de uma perda de cache de traço. Para essa finalidade, o agente de tradução de microinstrução 54 funciona para prover os estágios de busca e decodificação 12 e 14, no caso de uma perda de cache de traço. O agente de tradução de microinstrução 54 é mostrado como incluindo um ponteiro de próxima instrução (NIP) 100, um Buffer de Procura a Parte de Tradução (TLB) de instrução 102, um previsorde ramificação 104, um buffer de fluxo de instrução 106, um pré-decodificador de instrução 108, uma lógica de direcionamento de instrução 110, um decodificador de instrução 112 e um calculador de endereço de ramificação 114. O ponteiro de próxima instrução 100, o TLB 102, o previsor de ramificação 104 e o buffer de fluxo de instru- ção 106, em conjunto, constituem uma unidade de previsão de ramificação (BPU) 99. O decodificador de instrução 112 e o calculador de endereço de ramificação 114, em conjunto, compreendem uma unidade de tradução de instrução (IX) 113.
O ponteiro de próxima instrução 100 emite requisições de próxi- ma instrução para o cache unificado 44. Na concretização exemplificatória, onde o microprocessador 30 compreende um microprocessador de múltiplas tarefas capaz do processamento de duas tarefas, o ponteiro de próxima ins- trução 100 pode incluir um multiplexador (MUX) (não mostrado), que sele- ciona entre ponteiros de instrução associados à primeira ou à segunda tare- fa, para inclusão na requisição de próxima instrução emitida a partir dele. Em uma concretização, o ponteiro de próxima instrução 100 entrelaçará requisi- ções de próxima instrução para a primeira e para a segunda tarefas em uma base de ciclo por ciclo ("pingue-pongue"), assumindo que instruções para ambas as tarefas tenham sido requisitadas e que os recursos do buffer de fluxo de instrução 106 para ambas as tarefas não tenham sido exauridos. As requisições de ponteiro de próxima instrução podem ser de 16, 32 ou 64 by- tes, dependendo de o endereço de requisição inicial estar na metade superi- or de uma tarefa alinhada de 32 bytes ou de 64 bytes. O ponteiro de próxima instrução 100 pode ser redirecionado pelo previsor de ramificação 104, pelo calculador de endereço de ramificação 114 ou pelo cache de traço 62, com uma requisição de perda de cache de traço sendo a requisição de redirecio- namento de prioridade mais alta.
Quando o ponteiro de próxima instrução 100 faz uma requisição de instrução para o cache unificado 44, ele gera um "identificador de requisi- ção" de dois bits, que está associado à requisição de instrução, e funciona como um "indicador" para a requisição de instrução relevante. Quando retor- nando dados, em resposta a uma requisição de instrução, o cache unificado 44 retorna os indicadores ou identificadores a seguir, juntamente com os dados:
1.0 "identificador de requisição" suprido pelo ponteiro de próxi-
ma instrução 100;
2. Um "identificador de bloco danificador" de três bits, que identi- fica o bloco danificador retornado; e
3. Um "identificador de tarefa", que identifica a tarefa à qual o dado retornado pertence.
As requisições de próxima instrução são propagadas a partir do ponteiro de próxima instrução 100 para o TLB de instrução 102, o qual exe- cuta uma operação de consulta de endereço, e envia um endereço físico para o cache unificado 44. O cache unificado 44 envia uma macroinstrução correspondente para o buffer de fluxo de instrução 106. Cada uma das re- quisições de próxima instrução também é propagada diretamente do pontei- ro de próxima instrução 100 para o buffer de fluxo de instrução 106, de modo a permitir que o buffer de fluxo de instrução 106 identifique a tarefa à qual a macroinstrução recebida do cache unificado 44 pertence. As macroinstru- ções da primeira e da segunda tarefas são, então, emitidas a partir do buffer de fluxo de instrução 106 para o pré-decodificador de instrução 108, o qual executa várias operações de cálculos de comprimento e de marcação de byte que servem, entre outras coisas, para demarcar macroinstruções no fluxo de instrução propagado para a lógica de direcionamento de instrução 110. A lógica de direcionamento de instrução 110, então, utiliza os vetores de marcação de byte para direcionar macroinstruções discretas para o de- codificador de instrução 112, para fins de decodificação. As macroinstruções também são propagadas a partir da lógica de direcionamento de instrução 110 para o calculador de endereço de ramificação 114, para fins de cálculo de endereço de ramificação. As microinstruções são, então, enviadas do decodificador de instrução 112 para o agente de envio de traço 60. Implementação de Múltiplas Tarefas
Na concretização exemplificatória do microprocessador 30 ilus- trada na Figura 2, será notado que há uma duplicação ou replicação de re- cursos limitada. De modo a prover uma capacidade de múltiplas tarefas em um processador no qual haja uma replicação limitada de unidades funcio- nais, é necessário implementar um certo grau de compartilhamento de re- cursos entre as tarefas. O esquema de compartilhamento de recursos em- pregado, como será apreciado, é dependente do número de tarefas que o processador é capaz de processar simultaneamente. Uma vez que as uni- dades funcionais em um processador, tipicamente, provêem alguma funcio- nalidade de armazenamento temporário (ou de armazenamento) e alguma funcionalidade de propagação, a questão de compartilhamento de recursos pode ser vista como compreendendo (1) o armazenamento e (2) o proces- samento / a propagação de componentes de compartilhamento de largura de banda. Por exemplo, em um processador que suporta o processamento si- multâneo de duas tarefas, os recursos de buffer em várias unidades funcio- nais podem ser logicamente divididos e alocados entre as duas tarefas. De modo similar, a largura de banda provida por um percurso para a propaga- ção de informação entre duas unidades funcionais deve ser dividida e aloca- da entre as duas tarefas. Como essas questões de compartilhamento de recursos podem surgir em vários locais em um encadeamento de processa- dor, diferentes esquemas de compartilhamento de recurso podem ser em- pregados nesses vários locais, de acordo com os ditados e com as caracte- rísticas do local específico. Será apreciado que diferentes esquemas de compartilhamento de recurso podem ser adequados a diferentes locais, ten- do em vista as funcionalidades e as características de operação variáveis.
A Figura 4 é um diagrama de blocos que ilustra componentes selecionados do microprocessador 30 ilustrado na Figura 3, e descreve vá- rias unidades funcionais que provêem uma capacidade de armazenamento temporário, como estando logicamente divididas para a acomodação de du- as tarefas (isto é, a tarefa Oea tarefa 1). A divisão lógica para duas tarefas das instalações de armazenamento temporário (ou do armazenamento) de uma unidade funcional pode ser obtida por uma alocação de um primeiro conjunto predeterminado de entradas em um recurso de armazenamento temporário para uma primeira tarefa e pela alocação de um segundo conjun- to predeterminado de entradas no recurso de armazenamento temporário para uma segunda tarefa. Especificamente, isso pode ser obtido pela provi- são de dois pares de ponteiros de escrita e de leitura, um primeiro par de ponteiros de escrita e de leitura estando associado a uma primeira tarefa e um segundo par de ponteiros de escrita e de leitura estando associado a uma segunda tarefa. O primeiro conjunto de ponteiros de escrita e de leitura pode estar limitado a um primeiro número predeterminado de entradas em um recurso de armazenamento temporário, enquanto o segundo conjunto de ponteiros de escrita e de leitura pode ser limitado para um segundo número predeterminado de entradas no mesmo recurso de armazenamento tempo- rário. Na concretização exemplificatória, o buffer de fluxo de instrução 106, o cache de traço 62 e uma fila de instrução 103 são mostrados, cada um pro- vendo uma capacidade de armazenamento que é logicamente dividida entre a primeira e a segunda tarefas.
A questão de alocação de largura de banda para um percurso entre unidades funcionais em um processador será discutida abaixo em maiores detalhes. Buffer de Fluxo de Instrução
Com referência à Figura 3, o buffer de fluxo de instrução 106 alimenta um fluxo de instrução para um único decodificador de instrução 112 (isto é, não há nenhuma replicação de decodificador). De modo a se fazer um uso eficiente deste recurso de decodificação único, é desejável assegu- rar que a largura de banda do percurso entre o buffer de fluxo de instrução 106 e o decodificador de instrução 112 e, assim sendo, a "largura de banda de decodificação" do decodificador de instrução 112, seja dividida e alocada de uma maneira eficiente. A presente invenção, assim sendo, propõe um método por meio do qual uma comutação de tarefa é implementada em rela- ção a dois fluxos de instrução alimentados a partir do buffer de fluxo de ins- trução 106. Esta metodologia de comutação de tarefa determina a taxa na qual as instruções para cada uma das duas tarefas são alimentadas para o decodificador de instrução 112. A presente invenção visa implementar um algoritmo de comutação de tarefa, que tenta obter as metas de comutação de tarefa a seguir:
• Executar uma comutação de tarefa apenas quando uma outra tarefa ti- ver dados que podem ser propagados em fluxo normal (por exemplo, a partir
do buffer de fluxo de instrução 106);
• Comutar tarefas, quando uma tarefa corrente estiver sendo incorreta- mente executada (por exemplo, quando uma tarefa corrente receber uma limpeza de recuperação (back-end));
· Comutar tarefas de modo a garantir um progresso à frente no encadea- mento de fluxo normal, antes da execução da comutação de tarefa (por e- xemplo, assegurando que pelo menos uma outra instrução completa para a tarefa corrente seja emitida a partir do buffer de fluxo de instrução 106, antes da execução de uma comutação de tarefa de uma tarefa corrente para uma tarefa alvo);
• Impedir que uma tarefa sugue as outras tarefas (por exemplo, executan- do uma operação de comutação de tarefa apenas uma vez que uma quanti- dade predeterminada de informação de instrução para uma tarefa corrente tenha sido propagada pelo encadeamento de processador, sem que quais-
quer outros mecanismos de comutação de tarefa tenham sido invocados); e
• Amortizar uma penalidade de comutação de tarefa (por exemplo, emitin- do uma quantidade mínima predeterminada de informação de instrução, an- tes de procurar uma ramificação tomada que possa disparar uma operação de comutação de tarefa).
A presente invenção será descrita agora, com referência a uma concretização exemplificatória, que é utilizada para a seleção entre dados de tarefa, armazenados temporariamente no buffer de fluxo de instrução 106, para propagação normal em um percurso unitário em direção ao decodifica- dor de instrução 112. Entretanto, será prontamente apreciado que os ensi- namentos da presente invenção podem ser utilizados em qualquer local em um encadeamento de processador, para fins de comutação de tarefa ou de entrelaçamento. A Figura 5 é um diagrama de blocos que mostra detalhes adicionais referentes à estrutura e à arquitetura do buffer de fluxo de instru- ção 106. Especificamente, o buffer de fluxo de instrução 106 é mostrado como incluindo um arranjo de armazenamento que tem 4 entradas 120 (en- trada 0 a entrada 3), que são logicamente divididas em uma primeira parti- ção 122 dedicada ao armazenamento de instruções de uma primeira tarefa (tarefa 0) e de uma segunda partição 124 dedicada ao armazenamento de instruções de uma segunda tarefa (tarefa 1). Em uma concretização exempli- ficatória, cada uma das entradas 120 é capaz de acomodar 8 blocos danifi- cadores de informação, e, assim sendo, o buffer de fluxo de instrução 106 provê 16 blocos danificadores de cache de dados por tarefa.
O buffer de fluxo de instrução 106 ainda inclui um bloco de alo- cação 125, que controla a escrita e a leitura de dados para e das partições lógicas 122 e 124.
Cada uma das partições 122 e 124 tem uma respectiva lógica de alocação 126, incluída no bloco de alocação 125. Cada lógica de alocação 126 inclui um ponteiro de escrita 128 e um ponteiro de leitura 130, cada um referenciando uma entrada 120 na partição associada 122 ou 124. Cada ló- gica de alocação 126 recebe um fluxo de instrução do cache unificado 44, e lê os blocos danificadores (isto é, 8 bytes) do fluxo de instrução para uma entrada 120 da primeira ou da segunda partição 122 ou 124, de acordo com as especificações de tarefa. Especificamente, examinando-se o "identifica- dor de tarefa" associado a cada bloco danificador de dados, cada lógica de alocação 126 é capaz de determinar em qual partição escrever os dados recebidos do cache unificado 44.
Cada uma das lógicas de alocação 126 extrai dados de uma respectiva partição 122 ou 124 para um MUX 132, que seleciona entre as saídas das partições 122 e 124, com base em um sinal de seleção de tarefa 134 declarado pela lógica de controle de comutação de tarefa 136. Assim sendo, na concretização exemplificatória da presente invenção, é a lógica de controle de comutação de tarefa 136 que implementa o esquema de entrela- çamento ou de comutação de tarefa. A lógica de controle de comutação de tarefa 136 é, mais ainda, mostrada como monitorando as saídas de cada uma das partições 122 ou 124, através das tarefas 138 e 140, de modo a ser capaz de determinar quando um bloco danificador de dados é despachado de uma das partições 122 ou 124, e para identificar a partir de qual dessas partições o bloco danificador foi despachado. O bloco danificador de dados selecionado pelo MUX 132 para extração é, então, propagado em fluxo nor- mal no encadeamento de processador para o pré-decodificador de instrução 108, e, eventualmente, para o decodificador de instrução 112, para decodifi- cação.
A Figura 6 é um diagrama de blocos que descreve os compo- nentes lógicos da lógica de controle de comutação de tarefa 136. Especifi- camente, a lógica de controle de comutação de tarefa 136 é mostrada como incluindo uma lógica de comutação quando inativa 150, uma lógica de comu- tação em ramificação 152, uma lógica de parada de latência longa 154, uma lógica de limpeza interna 156, uma lógica de nenhum fluxo de dados 158, uma lógica de mudança forçada de tarefa 160, uma lógica de limpeza exter- na 162, e uma lógica de fluxo inserido 164. Embora cada uma das lógicas 150 a 164 seja mostrada na Figura 6 como sendo discreta, pode haver um compartilhamento de componente significativo entre as várias lógicas, como será descrito abaixo. Cada uma das lógicas 150 a 164 implementa uma fun- ção específica, que pode fazer com que o sinal de seleção 134 para o MUX 132 seja declarado ou retirado de declaração, para, desse modo, causar uma comutação de tarefa, da maneira descrita acima. A funcionalidade reali- zada em cada uma das lógicas 150 a 164 será descrita com referência aos fluxogramas providos nas Figuras 7 a 14. Os detalhes de uma concretização exemplificatória específica são descritos com referência às Figuras 15 a 16. A Lógica de Comutação Quando Inativa (150) A lógica de comutação quando inativa 150 determina qual de
várias tarefas é selecionada como uma tarefa de começo, no caso em que todas as tarefas estão inativas. A Figura 7 é um fluxograma que ilustra um método 200, de acordo com uma concretização exemplificatória da presente invenção, de determinação de uma tarefa de começo, quando duas tarefas em um processador de múltiplas tarefas estão inativas. Será apreciado que o método 200 também pode encontrar aplicação em um processador de múl- tiplas tarefas que suporte mais de duas tarefas. O método 200 pode ser im- plementado na lógica de comutação quando inativa 150. O método 200 co- meça na etapa 202, com uma condição de tarefa inativa, na qual ambas as tarefas (isto é, a tarefa Oea tarefa 31) estão inativas. Na etapa 204, uma primeira tarefa (por exemplo, a tarefa 0) é selecionada pela declaração ou pela retirada de declaração do sinal de seleção 134, com base, meramente por exemplo, em uma indicação do microcódigo seguindo-se a um evento de limpeza de encadeamento (por exemplo, uma mensagem danificadora ("nu- ke") de encadeamento). Na caixa de decisão 206, é feita uma determinação quanto a uma requisição por uma instrução de tarefa 1 ser recebida antes do recebimento de uma requisição por uma instrução de tarefa 0. Com referên- cia à Figura 5, pode ser visto que a lógica de controle de comutação de tare- fa 136 é acoplada para receber uma indicação, através de um sinal de tarefa 137 do ponteiro de próxima instrução 100, quanto à próxima instrução sendo recuperada a partir do cache unificado 44. Desta forma, a lógica de controle de comutação de tarefa 136 e, especificamente, a lógica de comutação quando inativa 150, é capaz de identificar a tarefa para a qual a requisição de próxima instrução é direcionada. Com referência, de novo, à Figura 7, se uma requisição por uma instrução de tarefa 1 for recebida antes de uma re- quisição por uma instrução de tarefa 0, uma comutação de tarefa é, então, realizada, na etapa 208. Alternativamente, a seleção de tarefa corrente é mantida na etapa 210. O método 200, então, termina, na etapa 212. A Lógica de Comutação Em Ramificação (152)
Em um microprocessador 30, tal como ilustrado na Figura 2, que emprega um mecanismo de previsão de ramificação, a possibilidade de uma ramificação mal-prevista está presente, obviamente. Por esta razão, a pre- sente invenção propõe um esquema de comutação de tarefa que, ao encon- trar uma instrução de ramificação que é prevista, pela unidade de previsão de ramificação, para ser TOMADA no fluxo de instrução de uma tarefa espe- cífica, executa uma comutação de tarefa. Isso é feito para reduzir a alocação de recursos do processador para aquela tarefa específica, tendo em vista a possibilidade da instrução de ramificação relevante estar sendo mal-prevista e a natureza especulativa do fluxo de instrução seguindo-se à instrução de ramificação. Desta forma, um fluxo de ramificação especulativo para uma tarefa que pode se seguir a uma ramificação mal-prevista é impedido de pe- netrar muito profundamente no encadeamento do processador, às custas de uma tarefa adicional que pode não incluir uma instrução de ramificação para uma extensão significativa do mesmo.
A Figura 8 é um fluxograma que ilustra um método 220, de acor- do com uma concretização exemplificatória da presente invenção, de execu- ção de uma operação de comutação de tarefa em um processador de múlti- plas tarefas na formação de seqüência (ou no despacho) e uma instrução de ramificação de uma tarefa corrente (por exemplo, a tarefa 0) do buffer de fluxo de instrução 106 para o pré-decodificador de instrução 108. O método 220 começa na etapa 222, onde uma instrução de ramificação é seqüencia- da pelo bloco de alocação 125 para ser emitida a partir de uma partição lógi- ca 122 ou 124 do arranjo (por exemplo, a partir da partição lógica 122 aloca- da para a tarefa 0). A lógica de controle de comutação de tarefa 136 e, mais especificamente, a lógica de comutação em ramificação 152, recebe um si- nal de identificação de ramificação 224 (BPsbsawbranch) do bloco de aloca- ção 125, ilustrado na Figura 5.
O sinal de identificação de ramificação 224 é declarado pelo blo- co de alocação 125 para identificar uma instrução de ramificação que foi prevista pela unidade de previsão de ramificação 99 como TOMADA. Espe- cificamente, o previsor de ramificação 104 fará uma previsão quanto a se uma instrução de ramificação específica será tomada ou não, utilizando qualquer uma das várias previsões e metodologias ou algoritmos bem co- nhecidos (por exemplo, com base em um histórico de ramificação registrado para a instrução de ramificação relevante). O previsor de ramificação 104, então, regulará um bit associado à instrução relevante, e propagado com a instrução em fluxo normal no encadeamento de processo, juntamente com o "identificador de requisição", de modo que ele possa ser associado à aloca- ção relevante pelo bloco de alocação 125. Deve ser notado que o sinal de identificação de ramificação 224 é apenas declarado para instruções de ra- mificação que estão previstas para serem TOMADAS, e não para aquelas que são previstas para NÃO SEREM TOMADAS. Entretanto, em uma con- cretização alternativa da presente invenção, o sinal de identificação de rami- ficação 224 pode ser declarado quando se encontra qualquer instrução de ramificação para a qual qualquer previsão tenha sido feita.
A Figura 15 ilustra o sinal de identificação de ramificação 224 como provendo uma entrada para uma porta AND 225.
Na caixa de decisão 226, é feita uma determinação quando a se uma quantidade mínima predeterminada de informação de instrução (por exemplo, um número mínimo predeterminado de blocos grandes) para a ta- refa corrente (tarefa 0) foi despachada (ou enviada) a partir do buffer de flu- xo de instrução 106. Para essa finalidade, e com referência à Figura 15A, a lógica de controle de comutação 136 inclui um contador na forma de um in- crementador de envio de bloco danificador 228, que mantém uma contagem dos blocos danificadores despachados a partir de uma partição lógica 122 ou 124 do buffer de fluxo de instrução 106, antes de uma comutação de tare- fa. O incrementador de envio de bloco danificador 228 é incrementado pela saída de uma porta AND 230, que recebe as três entradas. Um sinal BPre- ady 232 é declarado pelo bloco de alocação 125, para indicar que um bloco danificador está pronto para ser despachado da partição lógica relevante 122 ou 124. Um sinal de tarefa 234, associado à ENTRADA (da lógica de controle de comutação de tarefa 136), identifica a tarefa (e, assim sendo, a partição lógica 122 ou 124) à qual o bloco danificador a ser despachado per- tence. Um sinal NOT(IStaII) 236 indica que nenhuma condição de parada foi encontrada na lógica de direcionamento de instrução 110. Quando da decla- ração dos sinais 232 a 236, a saída da porta AND 230 é declarada, e o in- crementador de envio de bloco danificador 228 é incrementado, de modo a registrar a formação de seqüência de um bloco danificador para despacho a partir do buffer de fluxo de instrução 106.
A lógica de controle de comutação de tarefa 136 ainda inclui um registrador de "blocos danificadores antes de comutação em ramificação" 238, que é, em uma concretização da presente invenção, programável atra- vés de um barramento de registrador de controle 240, para armazenar um valor indicativo de um número predeterminado de blocos danificadores que são requeridos como tendo sido seqüenciados a partir do buffer de fluxo de instrução 106, antes de uma operação de comutação de tarefa em resposta a uma instrução de ramificação poder ocorrer. Em uma concretização alter- nativa da presente invenção, o valor indicativo do número predeterminado de blocos danificadores pode ser incorporado. A lógica de controle de comuta- ção 136 ainda inclui um comparador 242, que executa uma operação de comparação em relação à saída do incrementador 228 e do registrador 238, e declara um sinal para a porta AND 244, no caso de o valor indicado pelo incrementador 228 exceder ao valor armazenado no registrador 238. A de- claração do sinal de saída do comparador 242 corresponde a uma determi- nação positiva na caixa de decisão 226 na Figura 8. A porta AND 230 também provê uma entrada para a porta AND
225, e a declaração da saída da porta AND 230 em conjunto com a declara- ção do sinal de identificação de ramificação 224 fazem com que a saída da porta AND 225 (isto é, um sinal enviado de ramificação 227) seja declarada como uma entrada para a porta AND 244. A declaração do sinal enviado de
ramificação 227 representa a ocorrência do evento detectado na etapa 222.
Seguindo-se a uma determinação positiva na caixa de decisão
226, o método 200 prossegue para uma caixa de decisão 248, onde é feita uma determinação quando a se uma quantidade mínima predeterminada de informação de instrução (por exemplo, um número mínimo predeterminado de blocos danificadores) para uma tarefa alternativa (por exemplo, a tarefa 1) está pendente e disponível para despacho a partir da partição lógica 124 do buffer de fluxo de instrução 106. Esta determinação é vantajosa pelo fato de que ela impede que uma comutação de tarefa ocorra quando uma infor- mação de instrução insuficiente foi armazenada temporariamente no buffer de fluxo de instrução 106 para a tarefa alvo, para garantir uma comutação de tarefa para uma tarefa alvo como essa. Especificamente, uma comutação de tarefa pode consumir mais ciclos de clock do que potencialmente seria re- querido para, novamente, suprir uma informação de instrução para uma tare- fa corrente. Por exemplo, uma operação de comutação de tarefa pode re- querer seis ciclos, ao passo que pode existir uma alta probabilidade de que uma informação de instrução para uma tarefa corrente possa ser recebida em três ciclos de clock.
Com referência, novamente, à Figura 15, uma implementação de exemplo da lógica de controle de comutação de tarefa 136 pode incluir um registrador de "blocos danificadores pendentes antes de comutação", que é programável através do barramento de registrador de controle 240, para o armazenamento de um valor indicativo de um número mínimo predetermina- do de blocos danificadores para uma tarefa alvo (por exemplo, a tarefa 1), que deve ser armazenada temporariamente em uma partição de arranjo (por exemplo, na partição 124), antes de uma comutação de tarefa para aquela tarefa alvo ser permitida. Em uma concretização alternativa da presente in- venção, o valor indicativo deste número predeterminado de blocos danifica- dores pode, novamente, ser incorporado. A lógica de controle de comutação de tarefa 136 também inclui um incrementador de "contagem de blocos dani- ficadores pendentes" 252, que mantém uma contagem do número de blocos danificadores para uma tarefa alvo (isto é, não uma tarefa corrente), que es- tão armazenados no buffer de fluxo de instrução 106. O incrementador 252 é incrementado por um sinal de "IPD de envio de bloco danificador pendente" 254, que é declarado pelo bloco de alocação 125, quando um bloco danifi- cador de informação de instrução recebido do cache unificado 44 for decla- rado para uma entrada no buffer 106. O bloco de alocação 125 utiliza o "i- dentificador de tarefa", discutido acima e associado a cada bloco danificador recuperado em resposta a uma requisição de próxima instrução, para identi- ficar se um bloco danificador específico é para a tarefa alvo e não para a tarefa corrente. Um comparador 256 compara os respectivos valores arma- zenados no registrador 250 e no incrementador 252, e declara um sinal de saída para a porta AND 244, quando o valor mantido pelo incrementador 202 exceder ao valor armazenado no registrador 250. A declaração do sinal de saída do comparador 256 corresponde a uma determinação positiva na cai- xa de decisão 248 mostrada na Figura 8.
Seguindo-se a uma determinação positiva na caixa de decisão 248, o método 220 prossegue para a caixa de decisão 260, onde é feita uma determinação quanto a se uma quantidade predeterminada de informação de instrução para a tarefa corrente foi seqüenciada pelo encadeamento do microprocessador 30. Esta determinação é vantajosa pelo fato de que ela garante o progresso para adiante da tarefa corrente, antes de uma operação de comutação de tarefa. Em uma concretização exemplificatória da presente invenção, que emprega o conjunto de instrução de Arquitetura Intel (IA), uma determinação é feita quanto a se três (3) blocos danificadores de informação de instrução para a tarefa corrente foram seqüenciados, já que isso garante pelo menos uma instrução completa para a tarefa corrente.
Em uma concretização alternativa da presente invenção, a de- terminação feita na caixa de decisão 260 pode ser descartada com a detec- ção da formação de seqüência de uma instrução de ramificação, a qual em si constitui pelo menos uma instrução completa, assegurando conformidade com a determinação na caixa de decisão 260.
Com referência à Figura 15A, uma concretização exemplificató- ria da lógica de controle de comutação de tarefa 136 pode incluir um compa- rador 262, que avalia se o valor de contagem mantido pelo incrementador "de bloco danificador enviado" 228 é maior ou igual a um valor mínimo pre- determinado, por exemplo, 3. Em concretizações alternativas da presente invenção, este valor mínimo predeterminado pode ser programável ou incor- porado. Se o valor mantido pelo incrementador 228 for igual ou exceder ao valor mínimo predeterminado, o comparador 262 declara um sinal de saída para a porta AND 244. A declaração do sinal de saída do comparador 262 corresponde a uma determinação positiva na caixa de decisão 260 mostrada na Figura 8.
Seguindo-se a uma determinação positiva na caixa de decisão 260, uma operação de comutação de tarefa é, então, realizada, na etapa 264, as condições representadas pelas caixas de decisão 226, 248 e 260 tendo sido encontradas. Por outro lado, caso qualquer uma das condições apresentadas pelas caixas de decisão 226, 248 e 260 não tenha sido encon- trada, uma seleção de tarefa corrente é mantida na etapa 266. O método 220, então, termina na etapa 268.
Será apreciado que as condições representadas pela etapa 222 e pelas caixas de decisão 226, 248 e 260 representam as quatro entradas para a porta AND 244 mostradas na Figura 15A, e que quando essas condi- ções são todas encontradas, a saída da porta AND 244 será declarada e proverá uma entrada para uma porta OR 245. A saída da porta OR 245 constitui o sinal de seleção de tarefa 134 extraído da lógica de controle de comutação de tarefa 136. A declaração da saída da porta OR 245 corres- ponde à execução da operação de comutação de tarefa na etapa 264.
Embora a concretização acima da presente invenção seja des- crita como tendo sido implementada com um incrementador 228, um regis- trador de "blocos danificadores antes de comutação em ramificação" 238 e com o comparador 242, será prontamente apreciado que a invenção pode ser implementada substituindo-se o incrementador 228 por um decrementa- dor que seja pré-carregado com o valor contido no registro 238, sempre que uma comutação de tarefa ocorrer. O decrementador, nesta concretização, é decrementado a cada vez que um bloco danificador for despachado e uma partição lógica atual 122 ou 124 do buffer de fluxo de instrução 106. O de- crementador, então, declara um sinal de saída (correspondente ao sinal de saída do comparador 242 na concretização previamente descrita), para indi- car uma determinação positiva na caixa de decisão 226. O decrementador também pode ser, nesta concretização, decrementado pela saída da porta AND 230.
Lógica de Parada de Latência Longa (154)
Devido aos recursos limitados que estão disponíveis para aloca- ção para um fluxo de instrução de uma tarefa específica em um encadea- mento de processador de um processador de múltiplas tarefas, e, também, devido a más previsões de ramificação e perdas de cache, paradas em um encadeamento de processador como esse são um lugar comum. Especifi- camente, com referência ao microprocessador 30 mostrado na Figura 2, po- de ocorrer que o alocador 76 determine que recursos insuficientes (por e- xemplo, registradores físicos, ou entradas nas estações de reserva ou no buffer de reordenação 78, os quais são logicamente divididos entre a tarefa Oea tarefa 1) estão disponíveis para instruções (isto é, microinstruções), para uma tarefa em particular recebida da fila 68. Neste caso, o alocador 76 declara um sinal de parada 82, específico para uma tarefa, o qual é propa- gado através do agente de envio de traço 60 para o agente de tradução de microinstrução 54. Quando da declaração de um sinal de parada 82 como esse para uma tarefa em particular, pode ser desejável executar uma opera- ção de comutação de tarefa. A lógica de parada de latência longa 154 reali- za o circuito para a implementação de uma operação e comutação de tarefa, no caso de uma parada de encadeamento de processador.
A Figura 9 é um fluxograma que ilustra um método 280, de acor- do com uma concretização exemplificatória da presente invenção, de execu- ção de uma operação de comutação de tarefa em um processador de múlti- plas tarefas quando da ocorrência de uma parada de latência longa, devido, por exemplo, a uma parada em um encadeamento de processador, como resultado de uma não disponibilidade de recurso, uma má previsão de rami- ficação, ou uma perda de cache. O método 280 começa na etapa 282, onde uma condição de parada é detectada. Como descrito acima, esta condição de parada pode ser detectada pela determinação de uma declaração do si- nal de parada específico de tarefa 82, ilustrado na Figura 2. Alternativamen- te, a condição de parada pode ser detectada pela determinação da declara- ção de outros sinais de parada declarados, por exemplo, pelo alocador 76, pelo cache de traço 62 (ambas denominadas paradas de recuperação (back- end)), pelo decodificador de instrução 112 ou pela lógica de direcionamento de instrução 110. Na caixa de decisão 284, é feita uma determinação quanto a se um número mínimo predeterminado de ciclos de clock decorreu desde que a parada foi detectada na etapa 282. Com referência à Figura 15, uma implementação de exemplo da lógica de controle de comutação de tarefa 136 pode incluir um registrador de "contagem de latência longa" 286, que é programável através do barramento de registrador de controle 240, para o armazenamento de um valor indicativo deste número predeterminado míni- mo de ciclos de clock que devem ter decorrido desde a detecção de parada, antes de uma comutação de tarefa para uma tarefa alvo ser permitida. Em uma concretização alternativa da presente invenção, o valor indicativo deste número mínimo predeterminado de ciclos de clock pode ser incorporado. A lógica de controle de comutação 136 também inclui um incrementador de "latência longa" 288, que mantém uma contagem do número de ciclos de clock que decorreram desde a detecção da parada na etapa 282. O incre- mentador 288 é incrementado por um sinal de "IXstall" ou de parada de tra- dução de instrução 290, que é declarado em cada ciclo de clock em que o encadeamento de processador é parado. O incrementador 288 é, mais ain- da, reiniciado pela retirada de declaração de um sinal "TCFBstall" 292, que é retirado de declaração quando a parada é eliminada. O sinal "TCFBstall" 292 é declarado por um Buffer de Preenchimento de Cache de Traço (TCFB) (não mostrado), que propaga um sinal de parada de alocação 58 a partir do agente de envio de traço 60 em fluxo contrário para o agente de tradução de microinstrução 54. Um comparador 294 compara os respectivos valores ar- mazenados no registrador 286 e no incrementador 288, e declara um sinal de saída para uma porta AND 296, quando o valor mantido pelo incrementa- dor 288 exceder ao valor armazenado no registrador 286. A declaração do sinal de saída do comparador 294 corresponde a uma determinação positiva na caixa de decisão 284 mostrada na Figura 9. Se for determinado na caixa de decisão 284 que o número pre- determinado de ciclos de clock não decorreu, a seleção de tarefa corrente é mantida na etapa 285, e o método 280 retorna para a caixa de decisão 284.
Seguindo-se a uma determinação positiva na caixa de decisão 284, o método 280 prossegue para a caixa de decisão 284, onde uma de- terminação é feita quanto a uma quantidade mínima predeterminada de in- formação de instrução para a tarefa corrente ter sido seqüenciada pelo en- cadeamento do microprocessador 30. Como descrito acima com referência à caixa de decisão 260 mostrada na Figura 8, esta determinação é feita pela combinação do incrementador de "bloco danificador enviado" 228 e do com- parador 262. O comparador 262 provê uma entrada para a porta AND 296, a saída do comparador 262 sendo declarada uma vez um número predetermi- nado de blocos danificadores para a tarefa corrente tenha sido seqüenciado pelo encadeamento de microprocessador. O sinal de saída 297 da porta AND 296 é propagado para o cal-
culador de endereço de ramificação 114, o qual, então, determina um pontei- ro de instrução de reinicio para a tarefa a partir da qual a comutação foi feita (isto é, a tarefa corrente) e retira de declaração um sinal de limpeza de ende- reço de ramificação (BAcIear) para a tarefa corrente. Em um nível mais ge- ral, quando uma comutação de tarefa ocorre, um ponteiro de instrução é re- querido para se identificar um local a partir do qual reiniciar a tarefa a partir da qual a comutação ocorreu. Este ponteiro de instrução pode ser (1) o alvo de uma instrução de ramificação que é prevista como TOMADA, caso esse em que o ponteiro de instrução é provido pela lógica de comutação em rami- ficação 152; (2) provida pelo microcódigo; ou (3) provida pelo calculador de endereço de ramificação 114 (como é o caso discutido imediatamente aci- ma).
Seguindo-se a uma determinação positiva na caixa de decisão 298, uma outra determinação é feita na caixa de decisão 300 quanto a se um sinal de limpeza de recuperação (back-end) de tradução de instrução 302 foi declarado. Se assim for, então, uma comutação de tarefa é realizada na etapa 303. Alternativamente, seguindo-se a determinações negativas nas caixas de decisão 298 ou 300, a seleção de tarefa corrente é mantida na etapa 304. O método 280, então, termina na etapa 306. A lógica de limpeza interna (156)
Uma operação de limpeza interna de encadeamento é invocada a partir de dentro do agente de tradução de microinstrução 54 em si, em o- posição a uma limpeza externa, a qual é invocada a partir do exterior do a- gente de tradução de microinstrução 54 (por exemplo, a partir da lógica de retirada na forma de uma operação de limpeza de uma mensagem danifica- dora ("nuke")). Essas operações de limpeza são ocasiões desejáveis para uma operação de comutação de tarefa, uma vez que há uma alta probabili- dade de que a operação de limpeza seja invocada como resultado de uma condição associada a uma tarefa corrente, e uma tarefa alternativa pode ser mais bem preparada (por exemplo, ter buffers preenchidos) para o proces- samento no encadeamento. A Figura 10 é um fluxograma que ilustra um método 310, de a-
cordo com uma concretização exemplificatória da presente invenção, de e- xecução de uma operação de comutação de tarefa em um processador de múltiplas tarefas quando da ocorrência de uma limpeza interna de encadea- mento. O método 310 começa na etapa 312, onde a declaração de um sinal de limpeza é detectada. Com referência à concretização exemplificatória da lógica de controle de comutação 136 mostrada na Figura 15A, isso pode ser realizado pela detecção da declaração do sinal "IXbaclear" de limpeza de calculador de endereço de ramificação de tradução de instrução 302. Espe- cificamente, este sinal 302 é mostrado como provendo uma entrada para uma porta AND 314, que ainda recebe uma entrada do comparador 256. Como descrito acima, a saída do comparador 256 é declarada quando o número de blocos danificadores pendentes no buffer de fluxo de instrução 106, como registrado pelo incrementador de "contagem de blocos danifica- dores pendentes" 252, excede o valor armazenado dentro do registro 250 de comutação anterior de grandes blocos pendentes. Assim sendo, a saída do comparador 256 é declarada para representar uma determinação positiva da condição representada pela caixa de decisão 316 do método 310, seguindo- se ao que uma operação de comutação de tarefa é realizada na etapa 318. Especificamente, quando ambas as entradas da porta AND 314 são decla- radas, a saída da porta AND 314 é declarada, o que, por sua vez, provê uma entrada declarada para a porta OR 245. Por outro lado, caso uma determi- nação negativa seja feita na caixa de decisão 316, a seleção de tarefa cor- rente é mantida na etapa 320. O método 310, então, termina na etapa 322. A Lógica de Nenhum Fluxo de Dados (158)
Em situações nas quais uma perda de cache de nível 1 ocorre para uma tarefa corrente, uma operação de latência longa resulta, tipicamen- te, que pode requerer um número relativamente grande de ciclos de clock para se completar. Se as condições para uma operação de latência longa que são especificadas pelo fluxograma mostrado na Figura 9 forem encon- tradas, a lógica de latência longa 154 pode, nesta situação, disparar uma operação de comutação de tarefa. Entretanto, se todas as condições para uma operação de latência longa não forem encontradas, a lógica de latência longa 154 não disparará uma operação de comutação de tarefa. Nessas si- tuações, uma lógica alternativa é requerida.
A Figura 11 é um fluxograma que ilustra um método 330, de a- cordo com uma concretização exemplificatória da presente invenção, de e- xecução de uma operação de comutação de tarefa em um processador de múltiplas tarefas, quando da ocorrência de uma condição de "nenhum fluxo de dados" em relação a uma tarefa específica no processador de múltiplas tarefas. O método 330 começa na etapa 332, onde a ausência de um fluxo de instrução para uma tarefa corrente a partir do cache unificado 44 para o buffer de fluxo de instrução 106 é detectada. Com referência à Figura 15A, em uma concretização exemplificatória, isso pode ser detectado pela avalia- ção pela declaração (ou pela retirada de declaração) de um sinal de fluxo de dados 334, que é declarado pelo cache unificado 44 para cada ciclo de clock durante o qual um fluxo de instrução é provido para o buffer de fluxo de ins- trução 106. A condição de "nenhum fluxo de dados" também pode ser detec- tada como um clock do fluxo de dados do pré-decodificador de instrução 108, já que isso implica em um travamento no fluxo de dados do cache unifi- cado 44 para o buffer de fluxo de instrução 106. A condição de "ausência de fluxo de dados" também pode ser detectada como um travamento do fluxo de dados para o pré-decodificador de instrução 108, já que isso implica em um travamento no fluxo de dados do cache unificado 44 para o buffer de flu- xo de instrução 106.
Na caixa de decisão 336, é feita uma determinação quanto a se um número mínimo predeterminado de ciclos de clock decorreu sem um flu- xo de dados do cache unificado 44 para o buffer de fluxo de instrução 106. Para essa finalidade, a lógica de controle de comutação de tarefa 136 é mostrada na Figura 15A como incluindo um contador de "nenhum fluxo de dados" 338, que é incrementado para cada ciclo de clock seqüencial para o qual o sinal de fluxo de dados 334 é retirado de declaração, indicando a au- sência de um fluxo de instrução para o buffer de fluxo de instrução 106 para a tarefa corrente. O contador 338 pode ser reiniciado pela declaração do sinal 335 que ocorre quando do recomeço de um fluxo de dados para o pré- decodificador de instrução 108 a partir do buffer de fluxo de instrução 106. O sinal 335 pode ser declarado em resposta a uma função E executada nos sinais 232 e 236 (isto é, os sinais BPready e NOTISstall). A lógica 136 ainda inclui um registrador de "ciclos de nenhum fluxo de dados" 340, que é pro- gramável através do barramento de registro de controle 240, para o armaze- namento de um valor indicativo de um número mínimo predeterminado de ciclos de clock, antes de uma condição de nenhum fluxo de dados poder ser detectada. Em uma concretização alternativa da presente invenção, o valor indicativo deste número predeterminado de ciclos de clock pode ser incorpo- rado. O contador 338 e o registrador 340 provêem uma entrada para um comparador 342, que declara uma saída para a porta AND 344, quando o valor mantido pelo contador 338 exceder ao valor armazenado no registrador 340. A declaração do sinal de saída do comparador 342 corresponde a uma determinação positiva na caixa de decisão 336 mostrada na Figura 11. No caso de uma determinação negativa na caixa de decisão
336, o método 330 prossegue para a etapa 345, onde a seleção de tarefa corrente é mantida. Seguindo-se a uma determinação positiva na caixa de decisão 336, o método 330 prossegue para executar determinações nas caixas de decisão 346 e 348, que correspondem às determinações feitas nas caixas de decisão 248 e 260 do método 220 mostrado na Figura 8. Assim sendo, as saídas dos comparadores 256 e 262, que implementam as determinações nas caixas de decisão 346 e 348, também são mostradas para proverem uma entrada para a porta AND 344. A saída da porta AND 344, novamente, provê uma entrada para a porta OR 245. Isso provê uma implementação de lógica para a execução da operação de comutação de tarefa na etapa 350 do método 330, se determinações positivas ocorrerem em relação às caixas de decisão 336, 346 e 348. Alternativamente, caso uma determinação nega- tiva ocorra em qualquer uma das caixas de decisão 336, 346 e 348, a sele- ção de tarefa corrente é mantida na etapa 352. O método 330, então, termi- na, na etapa 354. A Lógica de Mudança Forçada de Tarefa (160)
Em certas situações, um fluxo de instrução (compreendendo a primeira ou a segunda tarefa) pode ser encontrado, o qual é particularmente linear, e, assim sendo, não inclui muitas instruções de ramificação. Assu- mindo que nenhuma das outras condições discutidas acima ou abaixo ocor- ra, é concebível que uma tarefa linear como essa possa consumir uma per- centagem desproporcional de recursos de processador, se nenhum evento ocorrer para disparar uma comutação de tarefa. Com vistas a evitar que uma tal tarefa linear como essa, sobrecarregue com respeito aos recursos do processador, a presente invenção propõe uma lógica que dispara uma ope- ração de comutação de tarefa seguindo-se a uma formação de seqüência ou a um despacho de uma quantidade predeterminada de informação de instru- ção para uma única tarefa de um recurso, tal como, por exemplo, o buffer de fluxo de instrução 106.
A Figura 12 é um fluxograma que ilustra um método 360, de a- cordo com uma concretização exemplificatória da presente invenção, de e- xecução de uma operação de comutação de tarefa em um processador de múltiplas tarefas quando da formação de seqüência (ou do despacho) de uma quantidade predeterminada de informação de instrução para uma tarefa específica (por exemplo, a tarefa 0) a partir do buffer de fluxo de instrução 106 para o pré-decodificador de instrução 108. O método 360 começa na etapa 362, onde uma informação de instrução para uma tarefa específica (por exemplo, a tarefa 0) é selecionada para a formação de seqüência e pa- ra o despacho a partir do buffer de fluxo de instrução 106. Esta seleção pode ser representada pelo estado do sinal de seleção de tarefa 134 extraído da lógica de controle de comutação de tarefa 136 para o MUX 132.
Na caixa de decisão 364, é feita uma determinação quanto a se uma quantidade máxima predeterminada de informação de instrução para uma tarefa corrente (por exemplo, a tarefa 0) foi seqüenciada a partir do buf- fer de fluxo de instrução 106. A lógica de controle de comutação de tarefa 136 de exemplo ilustrada na Figura 15A é mostrada como incluindo um re- gistrador de "voracidade de recurso" 366, que é programável através do bar- ramento de registrador de controle 240, para o armazenamento de um valor indicativo de um número máximo predeterminado de blocos danificadores para uma tarefa específica, que podem ser seqüenciados a partir do buffer de fluxo de instrução 106, antes de uma operação de comutação de tarefa ser disparada. Em uma concretização alternativa da presente invenção, o valor indicativo deste número máximo predeterminado de blocos danificado- res pode ser incorporado. O registrador de "voracidade de recurso" 366 e o incrementador de "bloco danificador enviado" 228, os quais mantêm uma contagem de blocos danificadores emitidos do buffer 106 para uma tarefa específica, provêem uma entrada para o comparador 368, que declara uma saída para uma porta AND 344, quando o valor extraído pelo incrementador 228 exceder ao valor armazenado no registrador de "voracidade de recurso" 366. Assim sendo, a declaração do sinal de saída do comparador 368 cor- responde a uma determinação positiva na caixa de decisão 364, mostrada na Figura 12.
A saída da porta AND 344 é mostrada para prover uma entrada para a porta OR 245, e, também, para prover uma saída de "inserir FTC" 434. No caso de uma determinação negativa na caixa de decisão 364, o método 360 prossegue para a etapa 370, onde a seleção de tarefa corrente é mantida, após, o método 330 retorna para a caixa de decisão 364.
Seguindo-se a uma determinação positiva na caixa de decisão 364, o método 360 prossegue para executar determinações nas caixas de decisão 372 e 374, que correspondem às determinações feitas nas caixas de decisão 248 e 260 do método 220, mostrado na Figura 8. Assim sendo, as saídas dos comparadores 256 e 262, que implementam as determinações feitas nas caixas de decisão 372 e 374, são mostradas para proverem uma entrada para a porta AND 344.
Seguindo-se às determinações positivas nas caixas de decisão 336, 346 e 348, um marcador de fluxo (ou um "fluxo inserido") (por exemplo, Ί100) é inserido no fluxo de instrução despachado do buffer de fluxo de ins- trução 106. Especificamente, o fluxo inserido é necessário, uma vez que se- rá requerido que o calculador de endereço de ramificação 114 reinicie uma busca pela tarefa corrente, já que a operação de comutação de tarefa pode ter ocorrido em uma instrução incompleta. Neste caso, a unidade de previ- são de ramificação 113 insere o fluxo inserido no fluxo de instrução, para indicar a mudança de tarefa forçada. O fluxo inserido tem um ForceUOPVa- Iid que é declarado. O fluxo inserido é inserido apenas após um bloco danifi- cador ter sido escalonado para ser enviado para o pré-decodificador de ins- trução 108 a partir do buffer de fluxo de instrução 106. Uma vez que o bloco danificador relevante é despachado, o fluxo inserido é MULTIPLEXADO para um campo ForceUOPVector (campo eventjnfo). Para essa finalidade, é fei- ta uma referência à Figura 16, que ilustra o campo eventjnfo para blocos danificadores armazenados temporariamente em uma partição de arranjo de exemplo 122 no buffer de fluxo de instrução 106. A saída "inserir FTC" 434 é mostrada para operar um MUX 450, para selecionar entre (1) o conteúdo corrente do campo eventjnfo 121 de um bloco danificador armazenado em uma entrada 120 na partição 122, e (2) o fluxo inserido 452. Na situação em que a saída 244 é declarada seguindo-se a uma declaração da saída do comparador 368, o fluxo inserido 452 será inserido no campo eventjnfo 121 de um bloco danificador despachado da partição 122.
Uma operação de comutação de tarefa é, então, realizada na etapa 376, pela declaração do sinal de seleção 134, em resposta à declara- ção da saída da porta AND 344. Alternativamente, caso uma determinação negativa ocorra em qualquer uma das caixas de decisão 364, 372 ou 374, a seleção de tarefa corrente é mantida na etapa 378. O método 360, então, termina, na etapa 380.
Uma operação de comutação de tarefa iniciada pela lógica de mudança forçada de tarefa 160 difere das outras operações de comutação de tarefa discutidas no presente relatório descritivo, pelo fato de que o bloco danificador de dados no qual a comutação de tarefa ocorre não tem nenhum aspecto especial ou de distinção que possa prover algum pré-aviso de uma operação de comutação de tarefa. Especificamente, as operações de comu- tação de tarefa realizadas pelas outras lógicas 150 a 164 na lógica de con- trole de comutação de tarefa 136 são acompanhadas de uma condição que torna a operação de comutação de tarefa benigna e, assim sendo, uma in- corporação efetuada não requer nenhum aviso. A lógica de direcionamento de instrução 110 não é equipada para lidar com uma súbita e não antecipa- da operação de comutação de tarefa. Assim, o marcador de fluxo inserido provê um mecanismo para informar à lógica de direcionamento de instrução 110 da operação de comutação de tarefa que ocorreu em sentido contrário.
Ainda, com uma mudança de tarefa forçada, como com as ou- tras operações de comutação de tarefa discutidas no presente relatório des- critivo, um ponteiro de instrução de "reinicio" é requerido. Como uma quebra no fluxo de instrução é forçada pela lógica de mudança forçada de tarefa 160, é desejável deixar o microcódigo provido no ponteiro de reinicio, em oposição ao ponteiro de próxima instrução 100. A Lógica de Limpeza Externa (162)
Como descrito acima com referência à lógica de limpeza interna 156, uma limpeza externa é invocada a partir do exterior do agente de tradu- ção de microinstrução 54.
A Figura 13 é um fluxograma que ilustra um método 400, de a- cordo com uma concretização exemplificatória da presente invenção, de e- xecução de uma operação de comutação de tarefa em um processador de múltiplas tarefas quando da ocorrência de uma limpeza externa de encade- amento. O método 400 começa na etapa 402, onde a declaração de um si- nal de limpeza externa é detectada. Com referência à concretização exem- plificatória da lógica de controle de comutação de tarefa 136 mostrada na Figura 15A, isso pode ser realizado pela detecção da declaração de um sinal de limpeza de agente de tradução de cache de traço / microinstrução "TCMi- teclear" 404, que provê uma entrada direta para a porta OR 245. Assim sen- do, uma declaração do sinal 404 fará com que uma declaração do sinal de seleção de tarefa 134 se propague da lógica de controle de comutação de tarefa 136 para o MUX 132, como mostrado na Figura 5. Isso é refletido na etapa 406 do método 400, o qual, após isso, termina na etapa 408. A Lógica de Fluxo Inserido (164) Na máquina de tradução de microinstrução 54, quando o Buffer
de Procura a Parte de Tradução de Instrução (ITLB) 102, mostrado na Figu- ra 3, registra uma perda de página, um marcador de fluxo (também denomi- nado um "fluxo inserido") é inserido no fluxo de instrução, para marcar este evento. Tal perda de página resulta em uma operação de andamento de pá- gina relativamente longa por um manipulador de perda de página (não mos- trado) que pode, meramente por exemplo, consumir até 150 ciclos de clock. Em um processador de múltiplas tarefas, onde uma perda de página ocorre para um fluxo de instrução de uma tarefa corrente, pode ser vantajoso exe- cutar uma operação de comutação de tarefa de modo a permitir que uma tarefa alternativa utilize a latência introduzida pela operação de andamento de página. A lógica de fluxo inserido 164, como descrito acima, provê uma concretização exemplificatória de lógica que implementa e executa uma fun- ção de comutação de tarefa quando da ocorrência de uma perda de página.
Outros eventos, além de uma perda de página, que podem re- sultar em um fluxo inserido, são bem conhecidos na técnica ou, de outra forma, são específicos para uma arquitetura de microprocessador.
A Figura 14 é um fluxograma que ilustra um método 420, de a- cordo com uma concretização exemplificatória da presente invenção, de e- xecução de uma operação de comutação de tarefa em um processador de múltiplas tarefas, quando da detecção de um fluxo inserido em um fluxo de instrução para uma tarefa corrente, o fluxo inserido indicado, meramente por exemplo, uma perda de página em relação ao TLB de instrução 102. O mé- todo 420 começa na etapa 422, com a seleção de uma tarefa corrente (por exemplo, a tarefa 0). Esta seleção pode ser representada pelo estado do sinal de seleção de tarefa 134 extraído da lógica de controle de comutação de tarefa 136 para o MUX 132. Na caixa de decisão 424, é feita uma deter- minação quanto a se um campo de "ITeventid" de evento de tradução de instrução 426 no fluxo de instrução para a tarefa corrente especifica um fluxo inserido (por exemplo, não tem o valor de Ό000 ou Ό111). Especificamente, a presença dos valores acima no campo de evento de tradução de instrução 426 pode indicar a ausência de um fluxo inserido. Com referência à Figura 15A, o campo 426 é mostrado como sendo introduzido em um par de com- paradores (ou outra lógica) 428 e 430, que determina se o campo 426 inclui o valor Ό000 ou '0111. Se assim for, um comparador 428 ou 430 declara uma saída para uma porta NOR 432, cuja saída provê uma entrada para a porta OR 245.
Na caixa de decisão 436, pode ser feita, opcionalmente, uma
determinação quanto a se uma quantidade mínima predeterminada de in- formação de instrução para uma tarefa alvo (por exemplo, a tarefa 1) está disponível para despacho a partir do buffer de fluxo de instrução 106. Esta determinação pode ser feita utilizando-se a saída da porta NOR 42 com a saída do comparador 262.
Seguindo-se a determinações positivas nas caixas de decisão 424 e 436, uma operação de comutação de tarefa pode, então, ser realizada na etapa 438. Especificamente, a declaração da saída da porta NOR 42, a qual é propagada através da porta OR 245, para fazer com que o sinal de seleção 134 seja declarado, pode corresponder à operação de comutação de tarefa realizada na etapa 438. Alternativamente, caso uma determinação negativa resulte nas caixas de decisão 424 ou 436, a seleção de tarefa cor- rente é mantida na etapa 440. O método 420, então, termina, na etapa 442. CONCLUSÃO
Na concretização exemplificatória da lógica de controle de comu- tação de tarefa 136 discutida acima com referência à Figura 15, várias das lógicas 150 a 164 são descritas como sendo implementadas utilizando-se a combinação do incrementador, do registrador e do comparador. Em uma concretização alternativa da presente invenção, algumas dessas lógicas po- dem ser implementadas usando-se um decrementador, que meramente de- crementa a partir de um valor predeterminado programável e declara um sinal quando atinge um valor nulo. Um exemplo de tal concretização como essa é ilustrado na Figura 15B.
Em resumo, a lógica de comutação de tarefa 136 descrita acima é vantajosa, pelo fato de que provê vários mecanismos flexíveis para a im- plementação e a execução de operações de comutação de tarefa em res- posta às ocorrências de eventos nos quais pode ser benéfico executar tais operações de comutação de tarefa. Ainda, pela inclusão de parâmetros pro- gramáveis, a presente invenção permite a modificação e a sintonia fina de mecanismos de comutação de tarefa, para uma variedade de situações e considerações. Por exemplo, quando da execução de um tipo de aplicação, tal como uma aplicação de multimídia, pode ser desejável ter os parâmetros dos mecanismos de comutação de tarefa regulados para valores diferentes de quando se executando um tipo diferente de aplicação, tal como uma apli- cação de processamento de texto.
A lógica comutação de tarefa 136 é adequada para uma divisão no tempo da largura de banda de um percurso (entre um recurso de fonte e um recurso de destino) e/ou um recurso de processamento em um proces- sador de múltiplas tarefas. Embora a lógica de comutação de tarefa 136 seja descrita acima como sendo utilizada para o despacho de uma informação de instrução para duas tarefas a partir de um buffer de fluxo de instrução para um pré-decodificador de instrução, será prontamente apreciado que os ensi- namentos da presente invenção poderiam ser utilizados para o despacho de uma informação de instrução para múltiplas tarefas a partir de qualquer re- curso para qualquer destino em um encadeamento de processador.
Assim, um método e um aparelho para a comutação de tarefa em um processador de múltiplas tarefas foram descritos. Embora a presente invenção tenha sido descrita com referência a concretizações exemplificató- rias específicas, será evidente que várias modificações e mudanças podem ser feitas nessas concretizações, sem se desviar do espírito e do escopo mais amplo da invenção. Assim sendo, o relatório descritivo e as figuras de- vem ser considerados em um sentido ilustrativo, ao invés de restritivo.

Claims (26)

1. Método de execução de uma operação de comutação de tare- fa em um processador multitarefas (30) caracterizado pelo fato de que compreende as etapas de: detectar um despacho de uma primeira quantidade predetermi- nada de informação de instrução para uma primeira tarefa a partir de uma fonte de informação de instrução em um processador multitarefas (30); e em resposta à etapa de detectar o despacho da primeira quanti- dade predeterminada de informação de instrução para a primeira tarefa, co- meçar o despacho de informação de instrução para a segunda tarefa a partir da fonte de informação de instrução somente se a segunda quantidade pre- determinada de informação de informação de instrução para a segunda tare- fa estiver disponível para despacho.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de detectar o despacho da primeira quantidade prede- terminada de informação de instrução para a primeira tarefa compreende as etapas de manter uma contagem de quantidades discretas da informação de instrução para a primeira etapa despachada a partir do recurso de informa- ção de instrução, e determinar quando a contagem das quantidades discre- tas da informação de instrução excede a um primeiro valor de limite prede- terminado.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a contagem do despacho de quantidades discretas da informa- ção de instrução para a primeira tarefa compreende a etapa de incrementar uma contagem quando do despacho de uma quantidade discreta da infor- mação de instrução a partir da fonte de informação de instrução.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a contagem do despacho de quantidades discretas da informa- ção de instrução para a primeira tarefa compreende a etapa de decrementar uma contagem quando do despacho de uma quantidade discreta da infor- mação de instrução a partir da fonte de informação de instrução.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende a etapa de armazenar o primeiro valor de limite predeterminado dentro de uma unidade de armazenamento programável.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a unidade de armazenamento programável é um registrador (238, 250, 286, 340, 366).
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de detectar compreende a etapa de executar uma ope- ração de comparação entre o conteúdo da unidade de armazenamento pro- gramável e o conteúdo de um contador de incrementação (338), que man- tém a contagem das quantidades discretas da informação de instrução para a primeira tarefa despachada a partir da fonte de informação de instrução.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de detectar compreende as etapas de carregar o valor de limite predeterminado a partir da unidade de armazenamento programá- vel dentro de um contador de decrementação como um valor de inicializa- ção, e detectar quando o contador de decrementação registrar um valor igual a zero.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a fonte de informação de instrução é particionada em uma pri- meira partição (122) para fornecer informação de instrução para a primeira tarefa e uma segunda partição (124) para fornecer informação de instrução para a segunda tarefa, e em que a etapa de começar o despacho da infor- mação de instrução para a segunda tarefa compreende a etapa de operar uma lógica de seleção de tarefa para selecionar informação de instrução para despacho a partir da segunda partição (124).
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a fonte de informação de instrução compreende uma uni- dade de armazenamento que é particionada para armazenar a informação de instrução para a primeira tarefa em uma primeira partição (122) e a infor- mação de instrução para a segunda tarefa em uma segunda partição (124), em que começo do despacho da informação de instrução para a segunda tarefa inclui a etapa de operar a lógica de seleção de tarefa para selecionar informação de instrução para despacho a partir da segunda partição (124) ao invés da primeira partição (122) da fonte de informação de instrução.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a fonte de informação de instrução compreende uma uni- dade de armazenamento, e em que a determinação quanto a se a segunda quantidade predeterminada de informação de instrução para a segunda tare- fa está disponível para despacho a partir da fonte de informação de instru- ção compreende as etapas de manter uma contagem de quantidades discre- tas da informação de instrução para a segunda tarefa recebida na unidade de armazenamento, e determinar quando a contagem das quantidades dis- cretas da informação de instrução recebida na unidade de armazenamento excede a um segundo valor de limite predeterminado.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende a etapa de armazenar o segundo valor de limite predeterminado dentro de uma unidade de armazenamento programá- vel.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que a unidade de armazenamento programável é um registra- dor (238, 250, 286, 340, 366).
14. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que a etapa de detectar compreende a etapa de executar uma operação de comparação entre o conteúdo da unidade de armazenamento programável e o conteúdo de um contador que mantém a contagem da re- cepção das quantidades discretas da informação de instrução para a segun- da tarefa dentro da fonte de informação de instrução.
15. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende as etapas de determinar se uma terceira quantidade predeterminada da informação de instrução para a primeira tare- fa foi despachada a partir da fonte de informação de instrução, e começar o despacho da informação de instrução para a segunda tarefa a partir da fonte de informação de instrução apenas se a terceira quantidade predeterminada da informação de instrução para a primeira tarefa tiver sido despachada a partir da fonte de informação de instrução.
16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que a terceira quantidade predeterminada de informação de instrução é igual ou maior do que uma quantidade mínima de informação de instrução para uma instrução completa de um primeiro conjunto de instru- ções.
17. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que a etapa de determinar quanto a se a terceira quantidade predeterminada de informação de instrução para a primeira tarefa foi despa- chada a partir da fonte de informação de instrução compreende contar o despacho de quantidades discretas da informação de instrução para a pri- meira tarefa a partir da fonte de informação de instrução, e determinar se a contagem das quantidades discretas da informação de instrução despacha- da a partir da fonte de informação de instrução excede a um terceiro valor de limite predeterminado.
18. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende as etapas de inserir um marcador de fluxo em um fluxo de instrução, que compreende a informação de instrução para a primeira tarefa despachada a partir da fonte de informação de instrução, an- tes de começar o despacho da informação de instrução para a segunda tare- fa partir da fonte de informação de instrução.
19. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o marcador de fluxo indica a lógica de direcionamento de instrução dentro do processador que a operação de comutação de tarefa tenha ocorrido.
20. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende as etapas de determinar se uma quarta quan- tidade predeterminada de informação de instrução para a primeira tarefa foi despachada a partir da fonte de informação de instrução e, se assim for, de- tectar uma instrução de ramificação na informação de instrução para a pri- meira tarefa a ser despachada a partir da fonte de informação de instrução e, em resposta à detecção da instrução de ramificação, começar a despa- char a informação de instrução para a segunda tarefa a partir da fonte de informação de instrução.
21. Método, de acordo com a reivindicação 20, caracterizado pelo fato de que compreende a etapa de detectar o despacho de uma quar- ta quantidade predeterminada da informação de instrução para a primeira tarefa a partir da fonte de informação de instrução, em resposta à detecção do despacho da quarta quantidade predeterminada de informação de instru- ção, examinar a informação de instrução para a primeira tarefa subseqüen- temente a ser despachada para identificar uma instrução de ramificação e, em resposta à identificação de uma instrução de ramificação na informação de instrução para a primeira tarefa a ser despachada, começar a despachar a informação de instrução para a segunda tarefa a partir da fonte de infor- mação de instrução.
22. Método, de acordo com a reivindicação 21, caracterizado pelo fato de que a detecção do despacho da quarta quantidade predetermi- nada da informação de instrução para a primeira tarefa compreende contar um despacho de quantidades discretas da informação de instrução para a primeira tarefa da fonte de informação de instrução, e determinar quando a contagem da informação de quantidades discreta excede a um quarto valor de limite predeterminado.
23. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende as etapas de detectar uma condição de para- da para a primeira tarefa em um encadeamento de processador do proces- sador multitarefas (30), detectar quando um intervalo de tempo predetermi- nado decorreu subseqüentemente à detecção da condição de parada e, em resposta à detecção da decorrência do primeiro intervalo de tempo prede- terminado, começar a despachar a informação de instrução para a segunda tarefa da fonte de informação de instrução.
24. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que inclui as etapas de detectar uma ausência de um fluxo de informação de instrução para a primeira tarefa para a fonte de informação de instrução a partir de uma fonte de fluxo a montante em um encadeamento de processador, detectar quando um segundo intervalo de tempo predetermi- nado decorreu subseqüentemente à detecção da ausência do fluxo de in- formação de instrução e, em resposta à detecção da decorrência do segun- do intervalo de tempo predeterminado, começar a despachar a informação de instrução para a segunda tarefa a partir da fonte de informação de instru- ção.
25. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende as etapas de detectar um marcador de fluxo na informação de instrução para a primeira tarefa recebida na fonte de in- formação de instrução e, em resposta à detecção do marcador de fluxo, co- meçar a despachar a informação de instrução para a segunda tarefa a partir da fonte de informação de instrução.
26. Método, de acordo com a reivindicação 25, caracterizado pelo fato de que o marcador de fluxo indica uma ocorrência de perda de página em um local dentro de um encadeamento de processador de fluxo a montante da fonte de informação de instrução.
BRPI0010602-0A 1999-04-29 2000-04-20 método de execução de uma operação de comutação de tarefa em um processador multitarefas. BR0010602B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/302,633 1999-04-29
US09/302,633 US6535905B1 (en) 1999-04-29 1999-04-29 Method and apparatus for thread switching within a multithreaded processor
PCT/US2000/010800 WO2000067113A2 (en) 1999-04-29 2000-04-20 Method and apparatus for thread switching within a multithreaded processor

Publications (2)

Publication Number Publication Date
BR0010602A BR0010602A (pt) 2005-01-11
BR0010602B1 true BR0010602B1 (pt) 2012-12-11

Family

ID=23168579

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0010602-0A BR0010602B1 (pt) 1999-04-29 2000-04-20 método de execução de uma operação de comutação de tarefa em um processador multitarefas.

Country Status (10)

Country Link
US (8) US6535905B1 (pt)
EP (1) EP1185924B1 (pt)
CN (2) CN100399263C (pt)
AU (1) AU4480200A (pt)
BR (1) BR0010602B1 (pt)
DE (1) DE60032481T2 (pt)
HK (1) HK1042363A1 (pt)
IL (2) IL146159A0 (pt)
TW (1) TW476915B (pt)
WO (1) WO2000067113A2 (pt)

Families Citing this family (224)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2728559B1 (fr) * 1994-12-23 1997-01-31 Saint Gobain Vitrage Substrats en verre revetus d'un empilement de couches minces a proprietes de reflexion dans l'infrarouge et/ou dans le domaine du rayonnement solaire
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7035997B1 (en) * 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7165257B2 (en) * 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7042887B2 (en) 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7058064B2 (en) * 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7032226B1 (en) * 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7076630B2 (en) * 2000-02-08 2006-07-11 Mips Tech Inc Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7065096B2 (en) * 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7162615B1 (en) 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
WO2002006959A1 (en) * 2000-07-14 2002-01-24 Clearwater Networks, Inc. Instruction fetch and dispatch in multithreaded system
US6701518B1 (en) * 2000-08-03 2004-03-02 Hewlett-Packard Development Company, L.P. System and method for enabling efficient processing of a program that includes assertion instructions
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US7757065B1 (en) * 2000-11-09 2010-07-13 Intel Corporation Instruction segment recording scheme
US20020087844A1 (en) * 2000-12-29 2002-07-04 Udo Walterscheidt Apparatus and method for concealing switch latency
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US20020156999A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Mixed-mode hardware multithreading
US6651158B2 (en) * 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7366884B2 (en) * 2002-02-25 2008-04-29 Agere Systems Inc. Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US7747989B1 (en) * 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US7200721B1 (en) * 2002-10-09 2007-04-03 Unisys Corporation Verification of memory operations by multiple processors to a shared memory
US7149900B2 (en) * 2002-12-12 2006-12-12 Intel Corporation Method of defending software from debugger attacks
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US20040128488A1 (en) * 2002-12-26 2004-07-01 Thimmannagari Chandra M. R. Strand switching algorithm to avoid strand starvation
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040216103A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US20040268099A1 (en) * 2003-06-30 2004-12-30 Smith Peter J Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
US7441245B2 (en) * 2003-08-14 2008-10-21 Intel Corporation Phasing for a multi-threaded network processor
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US20050055594A1 (en) * 2003-09-05 2005-03-10 Doering Andreas C. Method and device for synchronizing a processor and a coprocessor
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
ES2377648T3 (es) * 2003-11-07 2012-03-29 Sharp Kabushiki Kaisha Método para acceso por división de frecuencia y de tiempo
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US20050166177A1 (en) * 2004-01-27 2005-07-28 Ylian Saint-Hilaire Thread module chaining
US20050183065A1 (en) * 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US20090299756A1 (en) * 2004-03-01 2009-12-03 Dolby Laboratories Licensing Corporation Ratio of speech to non-speech audio such as for elderly or hearing-impaired listeners
US7426731B2 (en) * 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US20060009265A1 (en) * 2004-06-30 2006-01-12 Clapper Edward O Communication blackout feature
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7533139B2 (en) * 2004-09-27 2009-05-12 Microsoft Corporation Method and system for multithread processing of spreadsheet chain calculations
CN100384181C (zh) * 2004-11-09 2008-04-23 北京中星微电子有限公司 一种ip网络环境下的多路音频缓冲处理的方法
US7254693B2 (en) * 2004-12-02 2007-08-07 International Business Machines Corporation Selectively prohibiting speculative execution of conditional branch type based on instruction bit
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
DE102005009083B4 (de) * 2005-02-28 2007-05-10 Infineon Technologies Ag Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) * 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
US20070067502A1 (en) * 2005-09-22 2007-03-22 Silicon Integrated Systems Corp. Method for preventing long latency event
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8019944B1 (en) * 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US20070101102A1 (en) * 2005-10-27 2007-05-03 Dierks Herman D Jr Selectively pausing a software thread
EP1963963A2 (en) * 2005-12-06 2008-09-03 Boston Circuits, Inc. Methods and apparatus for multi-core processing with dedicated thread management
US8275942B2 (en) * 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US7877757B2 (en) * 2006-05-05 2011-01-25 Microsoft Corporation Work item event monitor for procession of queued events
US8032821B2 (en) 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US9146745B2 (en) * 2006-06-29 2015-09-29 Intel Corporation Method and apparatus for partitioned pipelined execution of multiple execution threads
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US7941643B2 (en) * 2006-08-14 2011-05-10 Marvell World Trade Ltd. Multi-thread processor with multiple program counters
US8046775B2 (en) 2006-08-14 2011-10-25 Marvell World Trade Ltd. Event-based bandwidth allocation mode switching method and apparatus
US20090012564A1 (en) * 2007-03-07 2009-01-08 Spineworks Medical, Inc. Transdiscal interbody fusion device and method
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) * 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8516462B2 (en) * 2006-10-09 2013-08-20 International Business Machines Corporation Method and apparatus for managing a stack
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US20080148022A1 (en) * 2006-12-13 2008-06-19 Arm Limited Marking registers as available for register renaming
US8347068B2 (en) * 2007-04-04 2013-01-01 International Business Machines Corporation Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor
US8521993B2 (en) * 2007-04-09 2013-08-27 Intel Corporation Providing thread fairness by biasing selection away from a stalling thread using a stall-cycle counter in a hyper-threaded microprocessor
US8261049B1 (en) 2007-04-10 2012-09-04 Marvell International Ltd. Determinative branch prediction indexing
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US20080263325A1 (en) * 2007-04-19 2008-10-23 International Business Machines Corporation System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
US7711935B2 (en) * 2007-04-30 2010-05-04 Netlogic Microsystems, Inc. Universal branch identifier for invalidation of speculative instructions
US7958323B1 (en) 2007-05-09 2011-06-07 Marvell Israel (M.I.S.L.) Ltd. Multithreading implementation for flops and register files
JP5177141B2 (ja) * 2007-06-20 2013-04-03 富士通株式会社 演算処理装置、演算処理方法
JP5136553B2 (ja) * 2007-06-20 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
JP5104863B2 (ja) * 2007-06-20 2012-12-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5201140B2 (ja) * 2007-06-20 2013-06-05 富士通株式会社 同時マルチスレッドの命令完了制御装置
US7779234B2 (en) * 2007-10-23 2010-08-17 International Business Machines Corporation System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US20090172370A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US8086825B2 (en) * 2007-12-31 2011-12-27 Advanced Micro Devices, Inc. Processing pipeline having stage-specific thread selection and method thereof
US8479173B2 (en) * 2008-07-09 2013-07-02 International Business Machines Corporation Efficient and self-balancing verification of multi-threaded microprocessors
US8161493B2 (en) * 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
US8347309B2 (en) * 2009-07-29 2013-01-01 Oracle America, Inc. Dynamic mitigation of thread hogs on a threaded processor
US10288617B2 (en) * 2009-10-26 2019-05-14 Externautics Spa Ovary tumor markers and methods of use thereof
US20110191775A1 (en) * 2010-01-29 2011-08-04 Microsoft Corporation Array-based thread countdown
US9354926B2 (en) * 2011-03-22 2016-05-31 International Business Machines Corporation Processor management via thread status
JP5861354B2 (ja) * 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN102495762B (zh) * 2011-11-16 2014-04-02 华为技术有限公司 一种线程调度方法、线程调度装置及多核处理器系统
US9052909B2 (en) 2011-12-07 2015-06-09 Arm Limited Recovering from exceptions and timing errors
US8738971B2 (en) 2011-12-07 2014-05-27 Arm Limited Limiting certain processing activities as error rate probability rises
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US9075621B2 (en) 2011-12-23 2015-07-07 Arm Limited Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US8640008B2 (en) 2011-12-23 2014-01-28 Arm Limited Error recovery in a data processing apparatus
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9665375B2 (en) 2012-04-26 2017-05-30 Oracle International Corporation Mitigation of thread hogs on a threaded processor and prevention of allocation of resources to one or more instructions following a load miss
US9875105B2 (en) * 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US9824013B2 (en) 2012-05-08 2017-11-21 Qualcomm Incorporated Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9514069B1 (en) 2012-05-24 2016-12-06 Schwegman, Lundberg & Woessner, P.A. Enhanced computer processor and memory management architecture
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US9323315B2 (en) * 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9317297B2 (en) * 2012-09-27 2016-04-19 Intel Corporation Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9471318B2 (en) 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
CN104123195B (zh) * 2013-04-23 2018-03-13 华为技术有限公司 一种指令清除方法及装置
US9367472B2 (en) 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
GB2519103B (en) * 2013-10-09 2020-05-06 Advanced Risc Mach Ltd Decoding a complex program instruction corresponding to multiple micro-operations
TWI602113B (zh) * 2013-11-14 2017-10-11 宏碁股份有限公司 操作介面切換方法及使用該方法之行動通訊裝置
US9535746B2 (en) * 2013-12-19 2017-01-03 International Business Machines Corporation Honoring hardware entitlement of a hardware thread
US10241498B1 (en) * 2014-05-15 2019-03-26 Feetz, Inc. Customized, additive-manufactured outerwear and methods for manufacturing thereof
US9824413B2 (en) * 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline
CN105786448B (zh) * 2014-12-26 2019-02-05 深圳市中兴微电子技术有限公司 一种指令调度方法及装置
JP6477216B2 (ja) * 2015-05-08 2019-03-06 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN106126336B (zh) * 2016-06-17 2019-06-04 上海兆芯集成电路有限公司 处理器以及调度方法
US10269088B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10503550B2 (en) 2017-09-30 2019-12-10 Intel Corporation Dynamic performance biasing in a processor
US11789741B2 (en) * 2018-03-08 2023-10-17 Sap Se Determining an optimum quantity of interleaved instruction streams of defined coroutines
US10831492B2 (en) 2018-07-05 2020-11-10 International Business Machines Corporation Most favored branch issue
US10997058B2 (en) * 2018-07-30 2021-05-04 EMC IP Holding Company LLC Method for performance analysis in a continuous integration pipeline
US20190253357A1 (en) * 2018-10-15 2019-08-15 Intel Corporation Load balancing based on packet processing loads
US11856073B1 (en) * 2019-03-22 2023-12-26 Amazon Technologies, Inc. Message batching for communication protocols
US11886916B2 (en) 2020-06-30 2024-01-30 Microsoft Technology Licensing, Llc System for adaptive multithreaded recalculation operations

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
JPH06105460B2 (ja) 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
GB8817911D0 (en) 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
GB2234613B (en) 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
DE4129614C2 (de) 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5088788A (en) * 1991-03-22 1992-02-18 Moulton Lee A Vehicle cover apparatus
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2520544B2 (ja) * 1991-09-26 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5452401A (en) 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5386561A (en) 1992-03-31 1995-01-31 International Business Machines Corporation Method of integrated system load control through dynamic time-slicing in a virtual storage environment
US5325526A (en) * 1992-05-12 1994-06-28 Intel Corporation Task scheduling in a multicomputer system
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
US5392437A (en) 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
WO1994015287A2 (en) 1992-12-23 1994-07-07 Centre Electronique Horloger S.A. Multi-tasking low-power controller
US5586332A (en) 1993-03-24 1996-12-17 Intel Corporation Power management for low power processors through the use of auto clock-throttling
EP0617361B1 (en) * 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
US5528513A (en) * 1993-11-04 1996-06-18 Digital Equipment Corp. Scheduling and admission control policy for a continuous media server
US5524263A (en) 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5809271A (en) * 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5983339A (en) 1995-08-21 1999-11-09 International Business Machines Corporation Power down system and method for pipelined logic functions
GB2306147B (en) 1995-10-13 1999-11-17 Marconi Gec Ltd Drag-producing aerodynamic device
US5701432A (en) 1995-10-13 1997-12-23 Sun Microsystems, Inc. Multi-threaded processing system having a cache that is commonly accessible to each thread
US5809522A (en) 1995-12-18 1998-09-15 Advanced Micro Devices, Inc. Microprocessor system with process identification tag entries to reduce cache flushing after a context switch
GB2311880A (en) 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
CN1147785C (zh) 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
US6088788A (en) 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
EP0856797B1 (en) 1997-01-30 2003-05-21 STMicroelectronics Limited A cache system for concurrent processes
DE69841526D1 (de) * 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US5835705A (en) 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
GB2323188B (en) 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
US6314530B1 (en) * 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US5996085A (en) 1997-07-15 1999-11-30 International Business Machines Corporation Concurrent execution of machine context synchronization operations and non-interruptible instructions
US6105051A (en) 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6256775B1 (en) 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6330584B1 (en) * 1998-04-03 2001-12-11 Mmc Networks, Inc. Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6289461B1 (en) * 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6625635B1 (en) * 1998-11-02 2003-09-23 International Business Machines Corporation Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor

Also Published As

Publication number Publication date
US20030018686A1 (en) 2003-01-23
US20030023658A1 (en) 2003-01-30
TW476915B (en) 2002-02-21
US6971104B2 (en) 2005-11-29
DE60032481D1 (de) 2007-02-01
US6535905B1 (en) 2003-03-18
CN100399263C (zh) 2008-07-02
WO2000067113A2 (en) 2000-11-09
US6865740B2 (en) 2005-03-08
IL146159A (en) 2006-12-10
US6785890B2 (en) 2004-08-31
AU4480200A (en) 2000-11-17
HK1042363A1 (en) 2002-08-09
CN1196060C (zh) 2005-04-06
US20030018685A1 (en) 2003-01-23
CN1645317A (zh) 2005-07-27
US20030023835A1 (en) 2003-01-30
EP1185924B1 (en) 2006-12-20
WO2000067113A3 (en) 2001-09-07
IL146159A0 (en) 2002-07-25
US20030023834A1 (en) 2003-01-30
BR0010602A (pt) 2005-01-11
US6850961B2 (en) 2005-02-01
CN1364261A (zh) 2002-08-14
US6795845B2 (en) 2004-09-21
US20030023659A1 (en) 2003-01-30
US6854118B2 (en) 2005-02-08
US20030018687A1 (en) 2003-01-23
US6981261B2 (en) 2005-12-27
EP1185924A2 (en) 2002-03-13
DE60032481T2 (de) 2007-09-27

Similar Documents

Publication Publication Date Title
BR0010602B1 (pt) método de execução de uma operação de comutação de tarefa em um processador multitarefas.
KR100531433B1 (ko) 다중스레드 프로세서내의 이벤트 어커런스를 처리하는방법 및 장치
US6889319B1 (en) Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6883107B2 (en) Method and apparatus for disabling a clock signal within a multithreaded processor
US7159133B2 (en) Low-power processor hint, such as from a pause instruction
US7856633B1 (en) LRU cache replacement for a partitioned set associative cache
US8504804B2 (en) Managing multiple threads in a single pipeline
US10747543B2 (en) Managing trace information storage using pipeline instruction insertion and filtering
WO2009085088A1 (en) Mechanism for profiling program software running on a processor
US20040117573A1 (en) Cache lock mechanism with speculative allocation
US7594097B2 (en) Microprocessor output ports and control of instructions provided therefrom
US10275250B2 (en) Defer buffer

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 11/12/2012, OBSERVADAS AS DEMAIS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time
B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2458 DE 14-02-2018 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.