BRPI0610840A2 - sistema e método de execução de cadeias de programa em um processador multiencadeado - Google Patents
sistema e método de execução de cadeias de programa em um processador multiencadeado Download PDFInfo
- Publication number
- BRPI0610840A2 BRPI0610840A2 BRPI0610840-7A BRPI0610840A BRPI0610840A2 BR PI0610840 A2 BRPI0610840 A2 BR PI0610840A2 BR PI0610840 A BRPI0610840 A BR PI0610840A BR PI0610840 A2 BRPI0610840 A2 BR PI0610840A2
- Authority
- BR
- Brazil
- Prior art keywords
- program chain
- program
- chain
- instruction
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000007246 mechanism Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 5
- 238000011022 operating instruction Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical group C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
SISTEMA E MéTODO DE EXECUçãO DE CADEIAS DE PROGRAMA EM UM PROCESSADOR MULTIENCADEADO. Um dispositivo processador multiencadeado é descrito e inclui uma primeira cadeia de programa e uma segunda cadeia de programa. A segunda cadeia de programa está em execução ligada com a primeira cadeia de programa em um modo de etapa de trava. Como tal, quando a primeira cadeia de programa experimenta um evento de parada, a segunda cadeia de programa é instruída para efetuar uma instrução de não operação para manter a segunda cadeia de programa em execução ligada com a primeira cadeia de programa. Além disso, a segunda cadeia de programa executa uma instrução de não operação durante cada ciclo de relógio que a primeira cadeia de programa é parada devido ao evento de parada. Quando a primeira cadeia de programa executa uma primeira operação bem sucedida após o evento de parada, a segunda cadeia de programa reinicia a execução normal.
Description
"SISTEMA E MÉTODO DE EXECUÇÃO DE CADEIAS DE PROGRAMA EM UMPROCESSADOR MULTIENCADEADO".
Campo da Invenção
A presente descrição refere-se . geralmente àprocessadores de sinal digital e dispositivos que utilizamtais processadores. Mais particularmente, a descriçãorefere-se à execução de múltiplas cadeias de programa porura registrador de processador de sinal digital.
Descrição da Técnica Anterior
Avanços na tecnologia resultaram em dispositivosde computação pessoal menores e mais potentes. Por exemplo,existe atualmente uma variedade de dispositivos decomputação pessoal portáteis, incluindo dispositivos decomputação sem fio, tais como telefones sem fio portáteis,assistentes pessoais digitais (PDAs), e dispositivos depaging que são pequenos, leves e facilmente portados pelosusuários. Mais especificamente, telefones sem fioportáteis, tais como telefones celulares e telefones IP,podem comunicar pacotes de dados e voz através de redes semfio. Além disso, muitos destes telefones sem fio incluemoutros tipos de dispositivos que são incorporados nestes.Por exemplo, um telefone sem fio também pode incluir umacâmera digital, uma câmera de video digital, um gravadordigital, e um reprodutor de arquivo de áudio. Também, taistelefones sem fio podem incluir uma interface de rede quepode ser utilizada para acessar a Internet. Como tal, estestelefones sem fio incluem capacidades de computaçãosignificativas.
Tipicamente, à medida que estes dispositivos setornam potentes, os programadores podem desejar desenvolverprogramas que sejam cada vez mais complexos, por exemplo,para decodificação de video. À medida que os programas setornam cada vez mais complexos, pode ser necessárioescrever programas paralelos através de duas ou maiscadeias. Entretanto, pode ser dificil executar programasparalelos através de duas ou mais cadeias.
Por conseguinte, seria vantajoso prover um métodoaperfeiçoado de execução de múltiplas cadeias de programaem um processador multiencadeado.
Resumo da Invenção
Um dispositivo processador multiencadeado édescrito e inclui uma primeira cadeia de programa e umasegunda cadeia de programa. A segunda cadeia de programaestá em execução ligada á primeira cadeia de programa em ummodo de etapa de trava. Em uma modalidade particular,quando a primeira cadeia de programa experimenta um eventode parada, a segunda cadeia de programa é instruída aefetuar uma instrução de não operação para manter aexecução da segunda cadeia de programa ligada á primeiracadeia de programa.
Adicionalmente, em uma modalidade particular, oevento de parada é causado por uma perda de memóriatemporária (cache). Além disso, em uma modalidadeparticular, a segunda cadeia de programa efetua umainstrução de não operação durante cada ciclo de relógio noqual a primeira cadeia de programa é parada devido aoevento de parada. Quando a primeira cadeia de programaefetua uma primeira operação bem sucedida após o evento deparada, a segunda cadeia de programa reinicia a execução normal.
Em outra modalidade particular, quando a segundacadeia de programa experimenta um evento de parada, aprimeira cadeia de programa é instruída para efetuar umainstrução de não operação para manter a execução daprimeira cadeia de programa ligada á segunda cadeia deprograma. Adicionalmente, a primeira cadeia de programaefetua uma instrução de não operação durante cada ciclo derelógio no qual a segunda cadeia de programa é paradadevido ao evento de parada. Quando a segunda cadeia deprograma efetua uma primeira operação bem sucedida após oevento de parada, a primeira cadeia de programa reinicia aexecução normal.
Em ainda outra modalidade particular, odispositivo também compreende pelo menos uma unidade deexecução de instrução e pelo menos uma unidade de execuçãode instrução seletivamente executa uma ou mais instruçõesou da primeira cadeia de programa ou da segunda cadeia deprograma. O dispositivo também compreende um controlador deparada que é acoplado a pelo menos uma unidade de execuçãode instrução. O controlador de parada é configurado parareceber um sinal de evento de parada a partir de pelo menosuma unidade de instrução quando pelo menos uma dentre aprimeira cadeia de programa e a segunda cadeia de programaexperimenta um evento de parada. Além disso, o controladorde parada é configurado para emitir um sinal para fazer comque a primeira cadeia de programa ou a segunda cadeia deprograma realize uma instrução de não operação em respostaao sinal de evento de parada.
Além disso, em uma modalidade particular, ocontrolador de parada é configurado para receber um sinalde término de parada a partir de pelo menos uma unidade deinstrução quando uma dentre a primeira cadeia de programaou a segunda cadeia de programa efetua uma primeiraoperação bem sucedida após o término de um estado de paradaproduzido pelo evento de parada. Além disso, o controladorde parada é configurado para emitir um sinal de execuçãonormal em resposta ao sinal de término de parada para fazercom que uma dentre a primeira cadeia de programa ou asegunda cadeia de. programa retome uma execução normal.Em outra modalidade, um dispositivo processadormultiencadeado é descrito e inclui uma memória e umseqüenciador que é acoplado à memória. Adicionalmente, odispositivo inclui um controlador de parada dentro doseqüenciador. Também, o dispositivo inclui pelo menos umaprimeira cadeia de programa e pelo menos uma segunda cadeiade programa na memória. Nesta modalidade particular, pelomenos a segunda cadeia de programa está em execução ligadaa pelo menos a primeira cadeia de programa de modo quequando pelo menos a primeira cadeia de programa experimentaum evento de parada, pelo menos a segunda cadeia deprograma é controlada para manter pelo menos a execução dasegunda cadeia de programa ligada pelo menos a primeiracadeia de programa.
Ainda em outra modalidade, um método departicionar um programa para operar em um processadormultiencadeado é descrito e inclui receber um programatendo uma pluralidade de palavras de instrução muito longase muito largas (VLIWs). Cada VLIW pode incluir umapluralidade de instruções. 0 método inclui ainda dividir oprograma em uma primeira parte a ser executada como umaprimeira cadeia de programa e uma segunda parte a serexecutada como uma segunda cadeia de programa.
Ainda em outra modalidade, um método de operaçãode um dispositivo processador de sinal digital é descrito einclui detectar que uma primeira cadeia de programa está emexecução ligada a uma segunda cadeia de programa, definindoum primeiro contador de programa para uma primeirainstrução da primeira cadeia de programa e definir umsegundo contador de programa para uma primeira instrução dasegunda cadeia de programa. Adicionalmente, nestamodalidade, o método inclui executar a primeira cadeia deprograma em um modo de etapa de trava com a segunda cadeiade programa de modo que cada instrução da segunda cadeia deprograma é executada no mesmo superciclo no qual umainstrução correspondente da primeira cadeia de programa éexecutada.
Ainda em outra modalidade, um registrador dedados para controlar execução de duas ou mais cadeias deprograma de um processador multiencadeado é descrito einclui um primeiro registrador de enlace de execução emcadeia. Adicionalmente, o registrador de dados inclui umprimeiro campo dentro do primeiro registrador de enlace deexecução em cadeia. 0 primeiro campo é associado a umaprimeira cadeia de programa. 0 registrador de dados tambéminclui um segundo campo dentro do primeiro registrador deenlace de cadeia. 0 segundo campo é associado a uma segundacadeia de programa.
Em outra modalidade, um conjunto de registradoresde dados é descrito e inclui um primeiro registrador deenlace de cadeia, um segundo registrador de enlace decadeia, e um terceiro registrador de enlace de cadeia.Nesta modalidade, cada um dos registradores de enlace decadeia inclui um primeiro bit de cadeia que é associado auma primeira cadeia de programa, um segundo bit de cadeiaque é associado a uma segunda cadeia de programa, umterceiro bit de cadeia que é associado a uma terceiracadeia de programa, um quarto bit de cadeia que é associadoa uma quarta cadeia de programa, um quinto bit de cadeiaque é associado a uma quinta cadeia de programa, e um sextobit de cadeia que é associado a uma sexta cadeia deprograma.
Ainda em outra modalidade, uma palavra deinstrução muito longa e muito larga virtual (VLIW) édescrita e inclui pelo menos uma primeira VLIW e pelo menosuma segunda VLIW que está em enlace com a primeira VLIW.Ainda em outra modalidade, um dispositivo decomunicação portátil é descrito e inclui um processador desinal digital. 0 processador de sinal digital inclui umaprimeira cadeia de programa e uma segunda cadeia deprograma. Nesta modalidade, a segunda cadeia de programaestá em execução ligada com a primeira cadeia de programa,de tal modo que quando a primeira cadeia de programaexperimenta um evento de parada, o segundo programa écontrolado para manter a execução ligada á primeira cadeiade programa.
Ainda em outra modalidade, um dispositivoassembler de código de computador é descrito e incluimecanismos para receber um programa tendo uma pluralidadede palavras de instrução muito longas e muito largas(VLIWs) e mecanismos para dividir o programa em umaprimeira parte a ser executada como uma primeira cadeia deprograma e uma segunda parte a ser executada como umasegunda cadeia de programa.
Em outra modalidade, um dispositivo processadorde sinal digital é descrito e inclui mecanismos paradetectar que uma primeira cadeia de programa que está emexecução ligada a uma segunda cadeia de programa,mecanismos para definir um primeiro contador de programa emuma primeira instrução da primeira cadeia de programa, emecanismos para definir um segundo contador de programapara uma primeira instrução da segunda cadeia de programa.Além disso, o dispositivo processador de sinal digitalinclui mecanismos para efetuar a primeira cadeia deprograma em um modo de etapa de trava com a segunda cadeiade programa de modo que cada instrução da segunda cadeia deprograma é executada em um superciclo no qual uma instruçãocorrespondente da primeira cadeia de programa é executada.Uma vantagem de uma ou mais modalidades descritasaqui pode incluir dividir um programa tendo uma pluralidadede instruções de palavra de instrução muito longa e muitolarga virtuais em duas cadeias de programa que têmindividualmente uma pluralidade de palavras de instruçãomuito longas (VLIWs).
Outra vantagem pode incluir executar uma primeiracadeia de programa em um modo de 'etapa de trava com umasegunda cadeia de programa, de tal modo que múltiplascadeias de programa podem ser executadas no modosincronizado. Este método reduz a complexidade deprogramação paralela e pode aperfeiçoar o desempenho doprocessador.
Outros aspectos, vantagens, e características dapresente descrição tornar-se-ão evidentes após exame detodo o pedido, incluindo as seguintes seções: BreveDescrição das Figuras, Descrição Detalhada da Invenção e asReivindicações.
Breve Descrição das Figuras
Os aspectos e as vantagens inerentes dasmodalidades descritas aqui se tornarão mais facilmenteevidentes mediante referência à descrição detalhada aseguir quando tomada em combinação com os desenhos emanexo, nos quais:
A Figura 1 é um diagrama geral de um processadorde sinal digital exemplar;
A Figura 2 é um diagrama geral de um arquivo deregistrador de controle exemplar do processador de sinaldigital mostrado na Figura 1;
A Figura 3 é um diagrama de uma instrução depalavra de instrução muito longa e muito larga exemplar;A Figura 4 é um fluxograma ilustrando um métodopara dividir a instrução de palavra de instrução muitolonga e muito larga da Figura 3;
A Figura 5 é um diagrama ilustrando uma operaçãode multiencadeamento do processador de sinal digitalmostrado na Figura 1;
A Figura 6 é um fluxograma ilustrando um métodopara executar uma primeira cadeia de programa na etapa detrava com uma segunda cadeia de programa;
A Figura 7 é um diagrama geral de um dispositivode comunicação portátil incorporando um processador desinal digital;
A Figura 8 é um diagrama geral de um telefonecelular exemplar incorporando um processador de sinaldigital;
A Figura 9 é um diagrama geral de um telefone deProtocolo Internet sem fio exemplar, incorporando umprocessador de sinal digital;
A Figura 10 é um diagrama geral de um assistentedigital portátil exemplar incorporando um processador desinal digital; e
A Figura 11 é um diagrama geral de um reprodutorde arquivo de áudio exemplar, incorporando um processadorde sinal digital.
Descrição Detalhada da Invenção
A Figura . 1 ilustra um diagrama em blocos de umamodalidade, não limitativa exemplar, de um processador desinal digital (DSP) 100. Como ilustrado na Figura 1, o DSP100 inclui uma memória 102 que é acoplada a um seqüenciador104 através de um barramento 106. Em uma modalidadeparticular, o barramento 106 é um barramento de sessenta equatro (64) bits e o seqüenciador 104 é configurado pararecuperar instruções da memória 102 tendo um comprimento detrinta e dois (32) bits. 0 barramento 106 é acoplado a umaprimeira unidade de execução de instrução 108, uma segundaunidade de execução de instrução 110, uma terceira unidadede execução de instrução 112, e uma quarta unidade deexecução de instrução 114. A Figura 1 indica que cadaunidade de execução de instrução 108, 110, 112, 114 podeser acoplada a um arquivo de registrador geral 116 atravésde um primeiro barramento 118. O arquivo de registradorgeral 116 pode ser também acoplado ao seqüenciador 104 e amemória 102 através de um segundo barramento 120.
Em uma modalidade particular, a memória 102 é umamemória de conteúdo endereçável (CAM) que inclui umaprimeira cache de instruções 122, uma segunda cache deinstruções 124, uma terceira cache de instruções 126, umaquarta cache de instruções 128, uma' quinta cache deinstruções 130, e uma sexta cache de instruções 132.Durante operação, as caches de instrução 122, 124, 126,128, 130, 132 podem ser acessadas independentemente entresi pelo seqüenciador 104. Adicionalmente, em uma modalidadeparticular, cada cache de instruções 122, 124, 126, 128,130, 132 inclui uma pluralidade de instruções, dados dedirecionamento de instrução para cada instrução, e dados depré-decodificação de instrução para cada instrução.
Como ilustrado na Figura 1, a memória 102 podeincluir uma fila de instruções 134 que inclui uma fila deinstruções para cada cache de instruções 122, 124, 126,128, 130, 132. Em particular, a fila de instruções 134inclui uma primeira fila de instruções 136 que é associadaa primeira cache de instruções 122, uma segunda fila deinstruções 138 que é associada a segunda cache deinstruções 124, uma terceira fila de instruções 140 que éassociada a terceira cache de instruções 126, uma quartafila de instruções 142 que é associada a quarta cache deinstruções 128, uma quinta fila de instruções 144 que éassociada a quinta cache de instruções 130, e uma sextafila de instruções 14 6 que é associada a sexta cache deinstruções 132.
Durante operação, o seqüenciador 104 pode buscarinstruções a partir de cada cache de instruções 122, 124,126, 128, 130, 132 através da fila de instruções 134. Emuma modalidade particular, o seqüenciador 104 buscainstruções a partir das filas de instrução 136, 138, 140,142, 144, 146 em ordem a partir da primeira fila deinstruções 136 para a sexta fila de instruções 146. Apósbuscar uma instrução a partir da sexta fila de instruções14 6, o seqüenciador 104 retorna à primeira fila deinstruções 136 e continua a buscar instruções a partir dasfilas de instrução 136, 138, 140, 142, 144, 146 em ordem.
Em uma modalidade particular, o seqüenciador 104opera em um primeiro modo como um seqüenciador superescalarbidirecional que suporta instruções superescalares.Adicionalmente, em uma modalidade particular, oseqüenciador também opera em um segundo modo que suportapalavras de instrução muito longas (VLIWs). Em particular,o seqüenciador pode operar como um seqüenciador VLIW de 4direções. Em uma modalidade particular, a primeira unidadede execução de instrução 108 pode executar uma instrução decarga, uma instrução de armazenagem, e uma instrução deunidade de lógica aritmética (ALU). A segunda unidade deexecução de instrução 110 pode executar uma instrução decarga e uma instrução ALU. Além disso, a terceira unidadede execução de instrução pode executar uma instrução demultiplicar, uma instrução de multiplicar-acumular (MAC),uma instrução ALU, uma construção de redirecionar programa,e uma instrução de registrador de transferência (CR) . AFigura 1 também indica que a quarta unidade de execução deinstrução 114 pode executar uma instrução de deslocamento(S), uma instrução ALU, uma construção de redirecionarprograma, e uma instrução CR. Em uma modalidade particular,a construção de redirecionar programa pode ser um loop deoverhead zero, uma instrução de ramificação, uma instruçãode salto (J), etc.
Como representado na Figura 1, o registradorgeral 116 inclui um primeiro arquivo de registradorunificado 148, um segundo arquivo de registrador unificado150, um terceiro arquivo de registrador unificado 152, umquarto arquivo de registrador unificado 154, um quintoarquivo de registrador unificado 156, e um sexto arquivo deregistrador unificado 158. Cada arquivo de registradorunificado 148, 150, 152, 154, 156, 158 corresponde a umacache de instruções 122, 124, 126, 128, 130, 132 dentro damemória 102. Além disso, em uma modalidade particular, cadaarquivo de registrador unificado 148, 150, 152, 154, 156,158 tem a mesma construção e inclui um número igual deoperandos de dados e operandos de endereço. Em umamodalidade particular, como ilustrado na Figura 1, oseqüenciador 104 inclui um controlador de parada 160.Adicionalmente, o seqüenciador 104 é acoplado a umregistrador de controle 162.
Durante operação do processador de sinal digital100, instruções são buscadas a partir da memória 102 peloseqüenciador 104, enviadas para as unidades de execução deinstrução designadas 108, 110, 112, 114, e executadas nasunidades de execução de instrução 108, 110, 112, 114. Osresultados em cada unidade de execução de instrução 108,110, 112, 114 podem ser gravados em um registrador geral116, isto é, para um dos arquivos de registrador unificados148, 150, 152, 154, 156, 158.Em uma modalidade particular, duas ou maiscadeias de programa podem estar conectadas para seremexecutadas em um modo de etapa de trava, como indicado peloregistrador de controle 162. Como tal, se uma das cadeiasde programa parar, isto é, experimentar um evento de paradacomo uma perda de cache, as cadeias ligadas à cadeia deprograma parada podem ser instruídas pelo controlador deparada 160 para efetuar uma ou mais instruções de nãooperação até que o evento de parada seja apagado.
Alternativamente, as cadeias ligadas à cadeia de programaparada podem ser instruídas para efetuar uma parada até queo evento de parada seja apagado. Este método para executarduas ou mais cadeias de programa de etapa de trava édescrito em detalhes abaixo em conjunção com a descrição daFigura 6.
Com referência à Figura 2, uma modalidade nãolimitativa exemplar de um registrador de controle émostrada e é geralmente designada por 200. Como mostrado, oregistrador de controle 200 inclui um primeiro registradorde enlace de execução em cadeia 204, um segundo registradorde enlace de execução em cadeia 206, e um terceiroregistrador de enlace de execução em cadeia 208. Cadaregistrador de enlace de execução em cadeia 204, 206, 208inclui um primeiro campo 210, um segundo campo 212, umterceiro campo 214, um quarto campo 216, um quinto campo218, e um sexto campo 220.
Em uma modalidade particular, o primeiro campo210 de cada registrador de enlace de execução em cadeia204, 206, 208 é associado a uma primeira cadeia deprograma. O segundo campo 212 de cada registrador de enlacede execução em cadeia 204, 206, 208 é associado a umasegunda cadeia de programa. Adicionalmente, o terceirocampo 214 de cada registrador de enlace de execução emcadeia 204, 206, 208 é associado a uma terceira cadeia deprograma. O quarto campo 216 de cada registrador de enlacede execução em cadeia 204, 206, 208 é associado a umaquarta cadeia de programa. O quinto campo 218 de cadaregistrador de enlace de execução em cadeia 204, 206, 208 éassociado a uma quinta cadeia de programa. Adicionalmente,o sexto campo 220 de cada registrador de enlace de execuçãoem cadeia 204, 206, 208 é associado a uma sexta cadeia deprograma.
Em uma modalidade particular, duas ou maiscadeias de programa podem estar ligadas de modo que serãoexecutadas juntas como descrito abaixo, pela entrada de umvalor, por exemplo, um (1), para o campo associado noregistrador de enlace de execução em cadeia 204, 206, 208.Por exemplo, quando o primeiro registrador de enlace deexecução 204 dentro do registrador de controle inclui um(1) no segundo campo 212 e um (1) no sexto campo 220, asegunda cadeia de programa será executada na etapa de travacom a sexta cadeia de programa. Adicionalmente, em umamodalidade particular, um segundo enlace de execução podeser programado pela entrada de um (1) em um ou mais camposno segundo registrador de enlace de execução 206.Adicionalmente, um terceiro enlace de execução pode serprogramado pela entrada de um (1) dentro de um ou maiscampos dentro do terceiro registrador de enlace de execução208.
A Figura 3 mostra uma palavra de instrução muitolonga e muito larga virtual (VLIW), designada por 300. Comoilustrado na Figura 3, a VLIW muito larga virtual incluiuma primeira instrução 302, uma segunda instrução 304, umaterceira instrução 306, uma quarta instrução 308, umaquinta instrução 310, uma sexta instrução 312, uma sétimainstrução 314, e uma oitava instrução 316.Em uma modalidade particular, a VLIW muito larga300 pode ser "dividida" em uma primeira parte 318 que podeser executada como uma primeira cadeia de programa e umasegunda parte 320 que pode ser executada como uma segundacadeia de programa. Como mostrado na Figura 3, a primeiraparte 318 da VLIW muito larga 300 inclui uma primeirainstrução 322, uma segunda instrução 324, uma terceirainstrução 326, e uma quarta instrução 328. Adicionalmente,a segunda parte 320 da VLIW muito larga 300 inclui umaprimeira instrução 330, uma segunda instrução 332, umaterceira instrução 334, e uma quarta instrução 336. Duranteoperação, a primeira cadeia de programa estabelecida pelaprimeira parte 318 da VLIW muito larga 300 pode serexecutada em um modo de etapa de trava com a segunda cadeiade programa estabelecida pela segunda parte 320 da VLIWmuito larga 300 para estabelecer uma VLIW muito larga"virtual".
Em uma modalidade particular, um programador podeprogramar programas complexos utilizando múltiplas VLIWsmuito largas 300. A seguir, um assembler pode dividir asVLIWs muito largas 300 para criar uma primeira cadeia deprograma e um segundo programa que pode ser executado nomodo de etapa de trava descrito aqui.
Com referência à Figura 4, um método para dividirum programa é mostrado e começa no bloco 400. No bloco 4 00,um assembler recebe um programa que tem uma pluralidade deVLIWs muito largas. Em uma modalidade particular, cada VLIWmuito larga inclui oito (8) instruções. Movendo para obloco 402, o assembler divide o programa em uma primeiraparte e uma segunda parte. No bloco 404, o assembler criauma primeira cadeia de programa a partir da primeira partedo programa e no bloco 406, o assembler cria uma segundacadeia de programa a partir da segunda parte do programa.Em uma modalidade não-limitativa exemplar, aprimeira cadeia de programa inclui uma pluralidade de VLIWse cada VLIW inclui quatro (4) instruções. Além disso, emuma modalidade não-limitativa, exemplar, a segunda cadeiade programa inclui uma pluralidade de VLIWs e cada VLIWinclui quatro (4) instruções. Continuando para o bloco 408,o assembler escreve dados para um registrador de enlace decadeia para indicar que a primeira cadeia de programa estáem execução ligada á segunda cadeia de programa. Em umamodalidade ilustrativa, o assembler pode escrever o númeroum para o registrador de controle para indicar queprogramas estão ligados e devem ser executados no modomultiencadeado de etapa de trava. O método termina noestado 410.
Com referência à Figura 5, um método geral deoperação multiencadeada para um processador de sinaldigital é apresentado. A Figura 5 mostra o método como éefetuado para a primeira instrução de seis cadeias deprograma independentes e a segunda instrução da primeiracadeia de programa. Em particular, a Figura 5 representauma primeira instrução de uma primeira cadeia de programa500, uma primeira instrução de uma segunda cadeia deprograma 502, uma primeira instrução de uma terceira cadeiade programa 504, uma primeira instrução de uma quartacadeia de programa 506, uma primeira instrução de umaquinta cadeia de programa 508, uma primeira instrução deuma sexta cadeia de programa 510, e uma segunda instruçãoda primeira cadeia de programa 512.
Como representado na E'igura 5, a primeirainstrução da primeira cadeia de programa 500 inclui umaetapa de decodificação 514, uma etapa de acesso de arquivode registrador 516, uma primeira etapa de execução 518, umasegunda etapa de execução 520, uma terceira etapa deexecução 522, e uma etapa de reescrever 524 para a primeirainstrução da primeira cadeia de programa 500. A primeirainstrução da segunda cadeia de programa 502 inclui umaetapa de decodificação 52 6, uma etapa de acesso de arquivode registrador 528, uma primeira etapa de execução 530, umasegunda etapa de execução 532, uma terceira etapa deexecução 534, e uma etapa de reescrever 536. Além disso, aprimeira instrução da terceira cadeia de programa 504inclui uma etapa de decodificação 538, uma etapa de acessode arquivo de registrador 540, uma primeira etapa deexecução 542, uma segunda etapa de execução 544, umaterceira etapa de execução 546, e uma etapa de reescrever 548.
Em uma modalidade particular, a primeirainstrução da quarta cadeia de programa 506 também incluiuma etapa de decodif icação 550, uma etapa de acesso dearquivo de registrador 552, uma primeira etapa de execução554, uma segunda etapa de execução 556, uma terceira etapade execução 558, e uma etapa de reescrever 560.
Adicionalmente, como mostrado na Figura 5, a primeirainstrução da quinta cadeia de programa 508 inclui uma etapade decodificação 562, uma etapa de acesso de arquivo deregistrador 564, uma primeira etapa de execução 566, umasegunda etapa de execução 568, uma terceira etapa deexecução 570, e uma etapa de reescrever 572. Além disso, aprimeira instrução da sexta cadeia de programa 510 incluiuma etapa de decodif icação 574, uma etapa de acesso dearquivo de registrador 57 6, uma primeira etapa de execução578, uma segunda etapa de execução 580, uma terceira etapade execução 582, e uma etapa de reescrever 584. Finalmente,como representado na Figura 5, a segunda instrução daprimeira cadeia 512 inclui uma etapa de decodificação 586,uma etapa de acesso de arquivo de registrador 588, umaprimeira etapa de execução 590, uma segunda etapa deexecução 592, uma terceira etapa de execução 594, e umaetapa de reescrever 596.
Em uma modalidade particular, como indicado naFigura 5, a etapa de decodificação 526 da primeirainstrução da segunda cadeia de programa 502 é efetuadasimultaneamente com a etapa de acesso de arquivo deregistrador 516 da primeira instrução da primeira cadeia deprograma 500. A etapa de decodificação 538 da primeirainstrução da terceira cadeia de programa 504 é efetuadasimultaneamente com a etapa de acesso de arquivo deregistrador 528 da primeira instrução da segunda cadeia deprograma 502 e a primeira etapa de execução 518 da primeirainstrução da primeira cadeia de programa 500.
Adicionalmente, a etapa de decodificação 550 da primeirainstrução da quarta cadeia de programa 506 é efetuadasimultaneamente com a etapa de acesso de arquivo deregistrador 540 da primeira instrução da terceira cadeia deprograma 504, a primeira etapa de execução 530 da primeirainstrução da segunda cadeia de programa 502, e a segundaetapa de execução 520 da primeira instrução da primeiracadeia de programa 500.
A Figura 5 também mostra que a etapa dedecodificação 562 da primeira instrução da quinta cadeia deprograma 508 é efetuada simultaneamente com a etapa deacesso de arquivo de registrador 552 da primeira instruçãoda quarta cadeia de programa 506, a primeira etapa deexecução 452 da primeira instrução da terceira cadeia deprograma 504, a segunda etapa de execução 532 da primeirainstrução da segunda cadeia de programa 502, e a terceiraetapa de execução 522 da primeira instrução da primeiracadeia de programa 500. Adicionalmente, a etapa dedecodificação 574 da primeira instrução da sexta cadeia deprograma 510 é efetuada simultaneamente com a etapa deacesso de arquivo de registrador 564 da primeira instruçãoda quinta cadeia de programa 508, a primeira etapa deexecução 554 da primeira instrução da quarta cadeia deprograma 506, a segunda etapa de execução 544 da primeirainstrução da terceira cadeia de programa 504, a terceiraetapa de execução 534 da primeira instrução da segundacadeia de programa 502, e a etapa de reescrever 524 daprimeira instrução da cadeia de programa 500.
Como indicado na Figura 5, a etapa dedecodificação 58 6 da primeira cadeia da segunda instrução512 é efetuada simultaneamente com a etapa de acesso dearquivo de registrador 57 6 da sexta cadeia da primeirainstrução 510, a primeira etapa de execução 566 da primeirainstrução da quinta cadeia de programa 508, a segunda etapade execução 556 da primeira instrução da quarta cadeia deprograma 506, a terceira etapa de execução 54 6 da primeirainstrução da terceira cadeia de programa 504, e a etapa dereescrever 536 da primeira instrução da segunda cadeia deprograma 502.
Em uma modalidade particular, a etapa dedecodificação, a etapa de acesso de arquivo de registrador,a primeira etapa de execução, a segunda etapa de execução,a terceira etapa de execução, e a etapa de reescrever paracada uma das instruções das cadeias de programa estabelecempipelines de instrução para as cadeias de programa. Cadapipeline utiliza um número de ciclos de relógio, porexemplo, seis ciclos de relógio, que é menor do que umataxa de envio de instruções, sete ciclos de relógio, paracada cadeia de programa armazenada na unidade de memória.
Por exemplo, uma nova instrução para a primeira cadeia deprograma pode ser enviada após uma instrução ser enviadapara a sexta cadeia de programa. Em uma modalidadeparticular, seis ciclos de relógio compreendem umsuperciclo. Adicionalmente, em uma modalidade ilustrativa,duas ou mais cadeias de programa podem estar em execuçãoligadas no modo de etapa de trava, de modo que uma segundainstrução possa ser executada no mesmo superciclo como umaprimeira instrução à qual esta está ligada.
A Figura 6 mostra um método para executar duascadeias em um modo de etapa de trava em um processador desinal digital. Iniciando no bloco 600, um seqüenciador lêum registrador de controle. No bloco 602, o seqüenciadordetecta que uma primeira cadeia de programa está emexecução ligada a uma segunda cadeia de programa. Movendopara o bloco 604, o seqüenciador define um primeirocontador de programa para a primeira instrução da primeiracadeia de programa e no bloco 60 6 o seqüenciador define umsegundo contador de programa para a primeira instrução dasegunda cadeia de programa.
Prosseguindo para o bloco 608, o seqüenciadorexecuta a primeira cadeia de programa. Em outras palavras,o seqüenciador envia a primeira instrução da primeiracadeia de programa para uma unidade de execução a serexecutada. No bloco 610, o processador de sinal digitalexecuta a segunda cadeia de programa. Em outras palavras, oseqüenciador envia a primeira instrução da segunda cadeiade programa para uma unidade de execução a ser executada.Em uma modalidade particular, as instruções da primeira esegunda cadeias de programa são executadas em um superciclocomum que pode incluir seis ciclos de relógio. Movendo paraa etapa de decisão 612, um controlador de parada noseqüenciador determina se a primeira cadeia de programa éparada, por exemplo, se uma unidade de execução deinstrução falhou em executar uma instrução da primeiracadeia de programa. A primeira cadeia de programa podeparar em um evento de parada como perda de cache. Na etapade decisão 612, se a primeira cadeia de programa forparada, o método continua até o bloco 614 e o controladorde parada instrui a segunda cadeia de programa para efetuaruma instrução de não operação. Alternativamente, ocontrolador de parada pode afirmar uma parada na segundacadeia de programa, isto é, o controlador de parada podeinstruir ou de outro modo fazer com que a segunda cadeia deprograma pare. Em uma modalidade particular, quando asegunda cadeia de programa executa uma instrução de nãooperação ou uma parada forçada, a segunda cadeia deprograma permanece na etapa de trava com a primeira cadeiade programa após a primeira cadeia de programa experimentarum evento de parada ou condição de parada.
Continuando para a etapa de decisão 616, ocontrolador de parada determina se a parada terminou, istoé, se o evento de parada ou a condição de parada foiapagada. Em uma modalidade particular, quando a instruçãode parada é executada, a parada pode ser consideradaterminada. Se a parada não terminou, o método retorna aobloco 614 e o controlador de parada instrui a segundacadeia de programa a efetuar outra instrução de nãooperação. Alternativamente, o controlador de parada faz comque a segunda cadeia de programa pare. Na etapa de decisão616, quando a parada termina, o controlador de paradainstrui a segunda cadeia de programa a retomar a execuçãonormal. O método então continua até a etapa de decisão 620.Voltando para a etapa de decisão 612, se a primeira cadeiade programa não for parada, o método também continua apartir da etapa de decisão 612 para a etapa de decisão 620.
Na etapa de decisão 620, o controlador de paradadetecta se a segunda cadeia de programa parou. Quando asegunda cadeia de programa pára, o método prossegue para obloco 622 e o controlador de parada instrui a primeiracadeia de programa a efetuar uma instrução de não operação.Em uma modalidade alternativa, o controlador de paradaafirma uma parada na primeira cadeia de programa. A seguir,na etapa de decisão 624, o controlador de parada determinase a parada da segunda cadeia de programa terminou. Se aparada não tiver terminado, o método retorna ao bloco 622 eo controlador de parada instrui a primeira cadeia deprograma a efetuar outra instrução de não operação.
Alternativamente, o controlador de parada faz com que aprimeira cadeia de programa pare. Quando a parada termina,o controlador de parada instrui a primeira cadeia deprograma a retomar a execução normal. 0 método entãoprossegue para a etapa de decisão 628. Voltando para aetapa de decisão 620, se o segundo programa não tiverparado o método salta da etapa de decisão 620 para a etapade decisão 628.
Na etapa de decisão 628, o seqüenciador determinase a execução das cadeias de programa está completa. Sesim, o método termina no estado 630. Por outro lado, ométodo retorna ao bloco 608 e o seqüenciador continua aefetuar as instruções da primeira cadeia de programa e dasegunda cadeia de programa em um modo de execução ligado.
Em outras palavras, o seqüenciador envia a próximainstrução da primeira cadeia de programa para uma unidadede execução a ser executada. A seguir, no bloco 610, oseqüenciador continua a executar as instruções da segundacadeia de programa.
A Figura 7 ilustra uma modalidade não-limitativaexemplar de um dispositivo de comunicação portátil que égeralmente designado por 720. Como ilustrado na Figura 7, odispositivo de comunicação portátil inclui um sistema on-chip 722 que inclui um processador de sinal digital 724. Emuma modalidade particular, o processador de sinal digital724 é o processador de sinal digital mostrado na Figura 1 edescrito aqui. A Figura 7 também mostra um controlador dedisplay 726 que é acoplado ao processador de sinal digital724 e um display 728. Além disso, um dispositivo de entrada730 é acoplado ao processador de sinal digital 724. Comomostrado, uma memória 732 é acoplada ao processador desinal digital 724. Adicionalmente, umcodificador/decodificador (CODEC) 734 pode ser acoplado aoprocessador de sinal digital 724. Um alto-falante 736 e ummicrofone 738 podem ser acoplados ao CODEC 730.
A Figura 7 também indica que um controlador semfio 740 pode ser acoplado ao processador de sinal digital724 e a uma antena sem fio 742. Em uma modalidadeparticular, uma fonte de alimentação 744 é acoplada aosistema on-chip 722. Além disse, em uma modalidadeparticular, como ilustrado na Figura 7, o display 726, odispositivo de entrada 730, o alto-falante 736, o microfone738, a antena sem fio 742, e a fonte de alimentação 744 sãoexternos ao sistema on-chip 722. Entretanto, cada um éacoplado a um componente do sistema on-chip 722.
Em uma modalidade particular, o processador desinal digital 724 utiliza multiencadeamento intercaladopara processar instruções associadas a cadeias de programanecessárias para efetuar a funcionalidade e operaçõesnecessárias pelos vários componentes do dispositivo decomunicação portátil 720. Por exemplo, quando uma sessão decomunicação sem fio é estabelecida através da antena semfio um usuário pode falar no microfone 738. Sinaiseletrônicos representando a voz do usuário podem serenviados para o CODEC 734 para serem encodifiçados. Oprocessador de sinal digital 724 pode efetuar processamentode dados para o CODEC 734 para encodificar os sinaiseletrônicos a partir do microfone. Além disso, sinaisentrantes recebidos através da antena sem fio 742 podem serenviados para o CODEC 734 pelo controlador sem fio 740 paraserem decodificados e enviados para o alto-falante 736. Oprocessador de sinal digital 724 pode efetuar também oprocessamento de dados para o CODEC 734 ao decodificar osinal recebido através da antena sem fio 742.
Adicionalmente, antes, durante ou após a sessãode comunicação sem fio, o processador de sinal digital 724pode processar entradas que são recebidas a partir dodispositivo de entrada 730. Por exemplo, durante a sessãode comunicação sem fio, um usuário pode estar utilizando odispositivo de entrada 730 e o display 728 para navegar naInternet através de um navegador de rede que é incorporadona memória 732 do dispositivo de comunicação portátil 720.O processador de sinal digital 724 pode intercalar várias
cadeias de programa que são utilizadas pelo dispositivo deentrada 730, o controlador de display 726, o display 728, oCODEC 734 e o controlador sem fio 740, como descrito aqui,para controlar eficientemente a operação do dispositivo decomunicação portátil 720 e vários componentes neste. Muitasdas instruções associadas às várias cadeias de programa sãoexecutadas simultaneamente durante um ou mais ciclos derelógio. Como tal, o consumo de energia e potência devido aciclos de relógio desperdiçados pode ser substancialmentediminuído.
Com referência à Figura 8, uma modalidade não-limitativa exemplar de um telefone celular é mostrada e égeralmente designada por 820. Como mostrado, o telefonecelular 820 inclui um sistema on-chip 822 que inclui umprocessador de banda base digital 824 e um processador debanda base analógico 826 que são acoplados juntos. Em umamodalidade particular, o processador de banda base digital824 é um processador de sinal digital, por exemplo, oprocessador de sinal digital mostrado na Figura 1 edescrito aqui. Como ilustrado na Figura 8, um controladorde display 828 e um controlador de tela de toque 830 sãoacoplados ao processador de banda base digital 824. Por suavez, um display de tela de toque 832 externo ao sistema on-chip 822 é acoplado ao controlador de display 828 e aocontrolador de tela de toque 830.
A Figura 8 indica ainda que um encodificador devídeo 834, por exemplo, um encodif icador de linha de fasealternante (PAL), um encodificador de cor e memóriaseqüencial (SECAM), ou um encodificador do comitê desistema(s) de televisão nacional (NTSC), é acoplado aoprocessador de banda base digital 824. Adicionalmente, umamplificador de vídeo 836 é acoplado ao encodificador devídeo 834 e ao display de tela de toque 832. Também, umaporta de vídeo 838 é acoplada ao amplificador de vídeo 836.Como representado na Figura.8, um controlador de barramentoserial universal (USB) 840 é acoplado ao processador debanda base digital 824. Além disso, uma porta USB 842 éacoplada ao controlador USB 840. Uma memória 844 e umcartão de módulo de identidade de assinante (SIM) 846também podem ser acoplados ao processador de banda basedigital 824. Adicionalmente, como mostrado na Figura 8, umacâmera digital 848 pode ser acoplada ao processador debanda base digital 824. Em uma modalidade exemplar, acâmera digital 848 é uma câmara de dispositivo acoplado decarga (CCD) ou uma câmera de semicondutor de oxido de metalcomplementar (CMOS).
Como também ilustrado na Figura 8, um CODEC deáudio estéreo 850 pode ser acoplado ao processador de bandabase analógico 826. Além disso, um amplificador de áudio852 pode ser acoplado ao CODEC de áudio estéreo 850. Em umamodalidade exemplar, um primeiro alto-falante estéreo 854 eum segundo alto-falante estéreo 856 são acoplados aoamplificador de áudio 852. A Figura 8 mostra que umamplificador de microfone 858 pode ser também acoplado aoCODEC de áudio estéreo 850. Adicionalmente, um microfone860 pode ser acoplado ao amplificador de microfone 858. Emuma modalidade particular, um sintonizador de rádio demodulação de freqüência (FM) 8 62 pode ser acoplado ao CODECde áudio estéreo 850. Além disso, uma antena FM 864 éacoplada ao sintonizador de rádio FM 8 62. Além disso, fonesde ouvido estéreo 866 podem ser acoplados ao CODEC de áudioestéreo 850.
A Figura 8 também indica que um transceptor deradiofreqüência (RF) 868 pode ser acoplado ao processadorde banda base analógico 826. Um comutador RF 870 pode seracoplado ao transceptor RF 868 e uma antena RF 872. Comomostrado na Figura 8, um teclado 874 pode ser acoplado aoprocessador de banda base analógico 82 6. Também, um fone deouvido mono com um microfone 87 6 pode ser acoplado aoprocessador de banda base analógico 82 6. Adicionalmente, umdispositivo vibratório 878 pode ser acoplado ao processadorde banda base analógico 82 6. A Figura 8 também mostra queuma fonte de alimentação 880 pode ser acoplada ao sistemaon-chip 822. Em uma modalidade particular, a fonte dealimentação 880 é uma fonte de alimentação de correntecontinua (CC) que prove potência para os vários componentesdo telefone celular 820 que necessitam de potência. Alémdisso, em uma modalidade particular, a fonte de alimentaçãoé uma bateria CC recarregável ou uma fonte de alimentaçãoCC que é derivada de um transformador de corrente alternada(AC) para CC que é conectado a uma fonte de potência AC.
Em uma modalidade particular, como representadona Figura 8, o display de tela de toque 832, a porta devideo 838, a porta USB 842, a câmera 848, o primeiro alto-falante estéreo 854, o segundo alto-falante estéreo 856, omicrofone, a antena FM 864, os fones de ouvido estéreo 866,o comutador RF 870, a antena RF 872, o teclado 874, o fonede ouvido mono 876, o vibrador 878, e a fonte dealimentação 880 são externos ao sistema on-chip 822. Alémdisso, em uma modalidade particular, o processador de bandabase digital 824 pode utilizar multiencadeamentointercalado, descrito aqui, para processar as váriascadeias de programa associadas a um ou mais dos componentesdiferentes associados ao telefone celular 820.
Com referência à Figura 9, uma modalidade não-limitativa exemplar de um telefone de Protocolo Internet(IP) sem fio é mostrado e é geralmente designado por 900.Como mostrado, o telefone IP sem fio 900 inclui um sistemaon-chip 902 que inclui um processador de sinal digital(DSP) 904. Em uma modalidade particular, o DSP 904 é oprocessador de sinal digital mostrado na Figura 1 edescrito aqui. Como ilustrado na Figura 9, um controladorde display 906 é acoplado ao DSP 904 e um display 908 éacoplado ao controlador de display 906. Em uma modalidadeexemplar, o display 908 é um display de cristal liquido(LCD). A Figura 9 também mostra que um teclado 910 pode seracoplado ao DSP 904.
Como também representado na Figura 9, uma memóriaflash 912 pode ser acoplada ao DSP 904. Uma memória deacesso aleatório dinâmico sincrono (SDRAM) 914, uma memóriade acesso aleatório estático (SRAM) 916, e uma memóriasomente leitura programável e eletricamente apagável(EEPROM) 918 também podem ser acopladas ao DSP 904. AFigura 9 também mostra que um diodo emissor de luz (LED)920 pode ser acoplado ao DSP 904. Adicionalmente, em umamodalidade particular, um CODEC de voz 922 pode seracoplado ao DSP 904. Um amplificador 924 pode ser acopladoao CODEC de voz 922 e um alto-falante mono 926 pode seracoplado ao amplificador 924. A Figura 9 indica ainda queum fone de ouvido mono 928 pode ser também acoplado aoCODEC de voz 922. Em uma modalidade particular, o fone deouvido mono 928 inclui um microfone.
A Figura 9 ilustra também que um processador debanda base de uma rede de área local sem fio (WLAN) 930pode ser acoplado ao DSP 904. Um transceptor RF 932 podeser acoplado ao processador de banda base WLAN 930 e, umaantena RF 934 pode ser acoplada ao transceptor RF 932. Emuma modalidade particular, um controlador Bluetooth 936pode ser também acoplado ao DSP 904 e uma antena Bluetooth938 pode ser acoplada ao controlador 936. A Figura 9 tambémmostra que uma porta USB 940 pode ser também acoplada aoDSP 904. Além disso, uma fonte de alimentação 942 éacoplada ao sistema on-chip 902 e prove potência para osvários componentes do telefone IP sem fio 900 através dosistema on-chip 902.
Em uma modalidade particular, como indicado naFigura 9, o display 908, o teclado 910, o LED 920, o alto-falante mono 926, o fone de ouvido mono 928, a antena RF934, a antena Bluetooth 938, a porta USB 940, e a fonte dealimentação 942 são externos ao sistema on-chip 902.Entretanto, cada um destes componentes é acoplado a um oumais componentes do sistema on-chip. Além disso, em umamodalidade particular, o processador de sinal digital 904pode utilizar multiencadeamento intercalado, ' como descritoaqui, para processar as várias cadeias de programa,incluindo cadeias em execução ligadas associadas a dois oumais dos diferentes componentes associados ao telefone IP900.A Figura 10 ilustra uma modalidade não-limitativaexemplar, de um assistente digital portátil (PDA) que égeralmente designado por 1000. Como mostrado, o PDA 1000inclui um sistema on-chip 1002 que inclui um processador desinal digital (DSP) 1004. Em uma modalidade particular, oDSP 1004 é o processador de sinal digital mostrado naFigura 1 e descrito aqui. Como representado na Figura 10,um controlador de tela de toque 1006 e um controlador dedisplay 1008 são acoplados ao DSP 1004. Adicionalmente, umdisplay de tela de toque é acoplado ao controlador de telade toque 1006 e ao controlador de display 1008. A Figura 10também indica que um teclado 1012 pode ser acoplado ao DSP 1004.
Como também representado na Figura 10, umamemória flash 1014 pode ser acoplada ao DSP 1004. Alémdisso, uma memória somente de leitura (ROM) 1016, umamemória de acesso aleatório dinâmico (DRAM) 1018, e umamemória somente de leitura programável e eletricamenteapagável (EEPROM) 1020 pode ser acoplada ao DSP 1004. AFigura 10 também mostra que uma porta de associação dedados infravermelho (IrDA) 1022 pode ser acoplada ao DSP1004. Adicionalmente, em uma modalidade particular, umacâmera digital 1024 pode ser acoplada ao DSP 1004.
Como mostrado na Figura 10, em uma modalidadeparticular, um CODEC de áudio estéreo 1026 pode seracoplado ao DSP 1004. Um primeiro amplificador estéreo 1028pode ser acoplado ao CODEC de áudio estéreo 1026 e umprimeiro alto-falante estéreo 1030 pode ser acoplado aoprimeiro amplificador estéreo 1028. Adicionalmente, umamplificador de microfone 1032 pode ser acoplado ao CODECde áudio estéreo 1026 e um microfone 1034 pode ser acopladoao amplificador de microfone 1032. A Figura 10 tambémmostra que um segundo amplificador estéreo 1036 pode seracoplado ao CODEC de áudio estéreo 1026 e um segundo alto-falante estéreo 1038 pode ser acoplado ao segundoamplificador estéreo 1036. Em uma modalidade particular,fones de ouvido estéreo 1040 também podem ser acoplados aoCODEC de áudio estéreo 1026.
A Figura 10 também ilustra que um controlador802.11 1042 pode ser acoplado ao DSP 1004 e uma antena802.11 1044 pode ser acoplada ao controlador 802.11 1042.Além disso, um controlador Bluetooth 1046 pode ser acopladoao DSP 1004 e uma antena Bluetooth 1048 pode ser acopladaao controlador Bluetooth 104 6. Como representado na Figura10, um controlador USB 1050 pode ser acoplado ao DSP 1004 euma porta USB 1052 pode ser acoplada ao controlador USB1050. Adicionalmente, um cartão inteligente 1054, porexemplo, um cartão de multimídia (MMC) ou um cartão digitalseguro (SD) pode ser acoplado ao DSP 1004. Além disso, comomostrado na Figura 10, uma fonte de alimentação 1056 podeser acoplada ao sistema on-chip 1002 e pode fornecerpotência aos vários componentes do PDA 1000 através dosistema on-chip 1002.
Em uma modalidade particular, como indicado naFigura 10, o display 1010, o teclado 1012, a porta IrDA1022, a câmera digital 1024, o primeiro alto-falanteestéreo 1030, o microfone 1034, o segundo alto-falanteestéreo 1038, os fones de ouvido estéreo 1040, a antena802.11 1044, a antena Bluetooth 1048, a porta USB 1052, e afonte de alimentação 1050 são externos ao sistema on-chip1002. Entretanto, cada um desses componentes é acoplado aum ou mais componentes no sistema on-chip. Adicionalmente,em uma modalidade particular, o processador de sinaldigital 1004 pode utilizar o multiencadeamento intercalado,descrito aqui, para processar as várias cadeias deprograma, incluindo cadeias em execução ligadas associadasa dois ou mais dos diferentes componentes associados aoassistente digital portátil 1000.
Com referência à Figura 11, uma modalidade não-limitativa exemplar de um reprodutor de arquivo de áudio,tal como reprodutor de camada de áudio 3 do grupo deperitos em imagem em movimento '(MP-3) é mostrada e égeralmente designada por 1100. Como mostrado, o reprodutorde arquivo de áudio 1100 inclui um sistema on-chip 1102 queinclui um processador de sinal digital (DSP) 1104. Em umamodalidade particular, o DSP 1104 é o processador de sinaldigital mostrado na Figura 1 e descrito aqui. Comoilustrado na Figura 11, um controlador de display 1106 éacoplado ao DSP 1104 e um display 1108 é acoplado aocontrolador de display 1106. Em uma modalidade exemplar, odisplay 1108 é um display de cristal liquido (LCD). AFigura 11 mostra também que um teclado 1110 pode seracoplado ao DSP 1104.
Como também representado na Figura 11, umamemória flash 1112 e uma memória somente de leitura (ROM)1114 podem ser acopladas ao DSP 1104. Adicionalmente, emuma modalidade particular, um CODEC de áudio 1116 pode seracoplado ao DSP 1104. Um amplificador 1118 pode seracoplado ao CODEC de áudio 1116 e um alto-falante mono 1120pode ser acoplado ao amplificador 1118. A Figura 11 tambémindica que uma entrada de microfone 1122 e uma entradaestéreo 1124 podem ser também acopladas ao CODEC de áudio1116. Em uma modalidade particular, fones de ouvido estéreo1126 também podem ser acoplados ao CODEC de áudio 1116.
A Figura 11 também indica que uma porta USB 1128e um cartão inteligente 1130 podem ser acoplados ao DSP1104. Adicionalmente, uma fonte de alimentação 1132 podeser acoplada ao sistema on-chip 1102 e pode fornecerpotência aos vários componentes do reprodutor de arquivo deáudio 1100 através do sistema on-chip 1102.
Em uma modalidade particular, como indicado naFigura 11, o display 1108, o teclado 1110, o alto-falantemono 1120, a entrada de microfone 1122, a entrada estéreo1124, os fones de ouvido estéreo 1126, a porta USB 1128, ea fonte de alimentação 1132 são externos ao sistema on-chip1102. Entretanto, cada um destes componentes é acoplado aum ou mais componentes no sistema on-chip. Além disso, emuma modalidade particular, o processador de sinal digital1104 pode utilizar multiencadeamento intercalado, descritoaqui, para processar as várias cadeias de programa,incluindo cadeias em execução ligadas associadas a dois oumais dos diferentes componentes associados ao reprodutor dearquivo de áudio 1100.
Com a configuração da estrutura descrita aqui, osistema e método para executar múltiplas cadeias em umprocessador multiencadeado prove um modo para dividir umprograma tendo uma pluralidade de instruções de palavra deinstrução muito longa e muito larga virtual, em duascadeias de programa tendo uma pluralidade de instruções depalavra de instrução muito longa. Além disso, o sistema emétodo podem ser utilizados para executar uma primeiracadeia de programa em um modo de etapa de trava com umasegunda cadeia de programa. O sistema e método podem serutilizados para executar qualquer número de cadeias deprograma no modo de etapa de trava descrito aqui. Alémdisso, o sistema e método podem incluir um modo para criaruma instrução de palavra de instrução muito longa e muitolarga virtual, a partir de duas ou mais instruções depalavra de instrução muito longa.
Os versados também reconheceriam que os diversosblocos lógicos, configurações, módulos, circuitos e etapasde algoritmo ilustrativos descritos com relação àsmodalidades descritas aqui podem ser implementados comohardware eletrônico, software de computador, ou combinaçõesdos dois. Para ilustrar claramente esta intercambialidadede hardware e software, vários componentes ilustrativos,blocos, configurações, módulos, circuitos e etapas foramdescritos acima geralmente em termos de sua funcionalidade.Se tal funcionalidade for implementada como hardware ousoftware depende da aplicação especifica e limitações deprojeto impostas sobre o sistema geral. Os versados natécnica podem implementar a funcionalidade descrita devários modos para cada aplicação especifica, porém taisdecisões de implementação não devem ser interpretadas comocausando afastando do escopo da presente descrição.
As etapas de um método ou algoritmo descritas comrelação às modalidades aqui descritas podem serincorporadas diretamente em hardware, em um módulo desoftware executado por um processador, ou em uma combinaçãodos dois. Um módulo de software pode residir na memóriaRAM, memória flash, memória ROM, memória PROM, memóriaEPROM, memória EEPROM, registradores, disco rigido, discoremovível, em um CD-ROM, ou em qualquer outra forma de meiode armazenagem conhecida na técnica. Um meio de armazenagemexemplar é acoplado ao processador de tal modo que oprocessador possa ler informações a partir de e escreverinformações para, o meio de armazenagem. Na alternativa, omeio de armazenagem pode ser integrado ao processador. 0processador e o meio de armazenagem podem residir em umASIC. 0 ASIC pode residir em um dispositivo de computaçãoou um terminal de usuário. Na alternativa, o processador eo meio de armazenagem podem residir como componentesdiscretos em um dispositivo de computação ou terminal deusuário.A descrição anterior das modalidades descritas éfornecida para permitir que qualquer pessoa versada natécnica faça ou utilize a presente invenção. Váriasmodificações a estas modalidades serão facilmente evidentespara os versados na técnica, e os principios genéricos aquidefinidos podem ser aplicados em outras modalidades sem seafastar do conceito inventivo ou escopo da invenção. Dessemodo, a presente invenção não pretende ser limitada àsmodalidades mostradas aqui, porém deve ser acordado oescopo mais amplo compatível com os principios e as novascaracterísticas como definido pelas reivindicações apensas.
Claims (52)
1. Dispositivo processador multiencadeado,compreendendo:- uma primeira cadeia de programa; e- uma segunda cadeia de programa;em que a segunda cadeia de programa está emexecução ligada á primeira cadeia de programa em um modo deetapa de trava.
2. Dispositivo, de acordo com a reivindicação 1,em que quando a primeira cadeia de programa experimenta umevento de parada, a segunda cadeia de programa é instruídapara efetuar uma instrução de não operação para manter aexecução da segunda cadeia de programa ligada á primeiracadeia de programa.
3. Dispositivo, de acordo com a reivindicação 1,em que o evento de parada é causado por uma perda de cache.
4. Dispositivo, de acordo com a reivindicação 2,em que a segunda cadeia de programa efetua uma instrução denão operação durante cada ciclo de relógio que a primeiracadeia de programa for parada devido ao evento de parada.
5. Dispositivo, de acordo com a reivindicação 4,em que após a primeira cadeia de programa efetuar umaprimeira operação bem sucedida após o evento de parada, asegunda cadeia de programa reinicia a execução normal.
6. Dispositivo, de acordo com a reivindicação 2,em que quando a segunda cadeia de programa experimenta umevento de parada, a primeira cadeia de programa é instruídapara efetuar uma instrução de não operação para manter aexecução da primeira cadeia de programa ligada á segundacadeia de programa.
7. Dispositivo, de acordo com a reivindicação 6,em que a primeira cadeia de programa efetua uma instruçãode não operação durante cada ciclo de relógio em que asegunda cadeia de programa é parada devido ao evento deparada.
8. Dispositivo, de acordo com a reivindicação 7,em que quando a segunda cadeia de programa efetua umaprimeira operação bem sucedida após o evento de parada, aprimeira cadeia de programa reinicia a execução normal.
9. Dispositivo, de acordo com a reivindicação 1,também compreendendo pelo menos uma unidade de execução deinstrução, a pelo menos uma unidade de execução deinstrução seletivamente executando uma ou mais instruçõesde pelo menos uma dentre a primeira cadeia de programa e asegunda cadeia de programa.
10. Dispositivo, de acordo com a reivindicação 9,também compreendendo um controlador de parada acoplado apelo menos uma unidade de execução de instrução, ocontrolador de parada configurado para receber um sinal deevento de parada a partir de pelo menos uma unidade deinstrução quando pelo menos uma dentre a primeira cadeia deprograma e a segunda cadeia de programa experimenta umevento de parada.
11. Dispositivo, de acordo com a reivindicação-10, em que o controlador de parada é configurado paraemitir um sinal para fazer com que pelo menos uma dentre aprimeira cadeia de programa e a segunda cadeia de programaefetue uma instrução de não operação em resposta ao sinalde evento de parada.
12. Dispositivo, de acordo com a reivindicação-11, em que o controlador de parada é configurado parareceber um sinal de término de parada a partir da pelomenos uma unidade de instrução quando pelo menos um dentrea primeira cadeia de programa ou a segunda cadeia deprograma efetua uma primeira operação bem sucedida após otérmino de um estado de parada produzido pelo evento deparada.
13. Dispositivo, de acordo com a reivindicação 12, em que o controlador de parada é configurado paraemitir um sinal de execução normal em resposta ao sinal detérmino de parada para fazer com que pelo menos um dentre aprimeira cadeia de programa ou a segunda cadeia de programaretome a execução normal.
14. Dispositivo processador multiencadeado,compreendendo:- uma memória;- um seqüenciador acoplado à memória;- um controlador de parada no seqüenciador;- pelo menos uma primeira cadeia de programa namemória; e- pelo menos uma segunda cadeia de programa namemória;em que pelo menos a segunda cadeia de memóriaestá em execução ligada pelo menos á primeira cadeia deprograma de modo que quando pelo menos a primeira cadeia deprograma experimenta um evento de parada, pelo menos asegunda cadeia de programa é controlada para manter pelomenos a segunda cadeia de programa em execução ligada pelomenos á primeira cadeia de programa.
15. Dispositivo, de acordo com a reivindicação 14, em que pelo menos a segunda cadeia de programa efetuauma instrução de não operação até que pelo menos a primeiracadeia de programa retome a execução normal.
16. Dispositivo, de acordo com a reivindicação 15, em que pelo menos a segunda cadeia de programaexperimenta um evento de parada, pelo menos a primeiracadeia de programa é controlada para manter a execução daprimeira cadeia de programa ligada á segunda cadeia deprograma em um modo de execução de etapa de trava.
17. Dispositivo, de acordo com a reivindicação 16, em que pelo menos a primeira cadeia de programa efetuauma instrução de não operação até que pelo menos o segundoprograma retome a execução normal.
18. Dispositivo, de acordo com a reivindicação 14, também compreendendo um arquivo de registrador decontrole para indicar enlace de execução de duas ou maiscadeias de programa.
19. Dispositivo, de acordo com a reivindicação 18, em que o arquivo de registrador de controle compreende:- um primeiro registrador de enlace de execuçãoem cadeia;- um primeiro campo no primeiro registrador deenlace de execução em cadeia, o primeiro campo associado auma primeira cadeia de programa; e- um segundo campo no primeiro registrador deenlace em cadeia, o segundo campo associado a uma segundacadeia de programa.
20. Dispositivo, de acordo com a reivindicação 19, em que quando um valor do primeiro campo associa a umvalor do segundo campo, a primeira cadeia de programa éidentificada como execução ligada à segunda cadeia deprograma.
21. Dispositivo, de acordo com a reivindicação 20, em que quando o valor do primeiro campo associa aovalor do segundo campo, a primeira cadeia de programa éexecutada em um processo de multiencadeamento de etapa detrava com a segunda cadeia de programa.
22. Método para particionar um programa paraoperar em um processador multiencadeado, o métodocompreendendo:- receber um programa possuindo uma pluralidadede palavras de instrução muito longas e muito largas(VLIWs), cada VLIW incluindo um conjunto de instruções; e- dividir o programa em uma primeira parte a serexecutada como uma primeira cadeia de programa e umasegunda parte a ser executada como uma segunda cadeia deprograma.
23. Método, de acordo com a reivindicação 22, emque a primeira cadeia de programa inclui uma pluralidade deVLIWs possuindo um primeiro número de instruções.
24. Método, de acordo com a reivindicação 23, emque a segunda cadeia de programa inclui uma pluralidade deVLIWs tendo um segundo número de instruções.
25. Método, de acordo com a reivindicação 24,também compreendendo escrever dados em um registrador deenlace em cadeia para indicar que a primeira cadeia deprograma está em execução ligada á segunda cadeia deprograma.
26. Método, de acordo com a reivindicação 24, emque o primeiro número de instruções é igual ao segundonúmero de instruções.
27. Método, de acordo com a reivindicação 24, emque cada uma da pluralidade de VLIWs muito largas incluioito instruções.
28. Método, de acordo com a reivindicação 27, emque cada uma da pluralidade de VLIWs da primeira cadeia deprograma inclui quatro instruções e cada uma da pluralidadede VLIWs da segunda cadeia de programa inclui quatroinstruções.
29. Método para operar um dispositivo processadorde sinal digital, o método compreendendo:- detectar que uma primeira cadeia de programaestá em execução ligada á segunda cadeia de programa;- definir um primeiro contador de programa parauma primeira instrução da primeira cadeia de programa;- definir um segundo contador de programa parauma primeira instrução da segunda cadeia de programa; e- executar a primeira cadeia de programa em ummodo de etapa de trava com a segunda cadeia de programa demodo que cada instrução da segunda cadeia de programa éexecutada em um superciclo no qual uma instruçãocorrespondente da primeira cadeia de programa é executada.
30. Método, de acordo com a reivindicação 29,também compreendendo detectar que uma instrução da primeiracadeia de programa experimentou uma condição de parada econtrolar a execução da segunda cadeia de programa paramanter a execução de etapa de trava entre a primeira cadeiade programa e a segunda cadeia de programa.
31. Método, de acordo com a reivindicação 30, emque a segunda cadeia de programa é instruída para efetuaruma instrução de não operação para manter a execução deetapa de trava entre a primeira cadeia de programa e asegunda cadeia de programa até que a primeira cadeia deprograma apague a condição de parada.
32. Método, de acordo com a. reivindicação 30, emque a segunda cadeia de programa é instruída a parar paramanter a execução de etapa de trava entre a primeira cadeiade programa e a segunda cadeia de programa até que aprimeira cadeia de programa apague a condição de parada.
33. Método, de acordo com a reivindicação 30,também compreendendo detectar que uma instrução da segundacadeia de programa experimentou uma condição de parada econtrolar a execução da primeira cadeia de programa paramanter a execução de etapa de trava entre a primeira cadeiade programa e a segunda cadeia de programa.
34. Método, de acordo com a reivindicação 33, emque a primeira cadeia de programa é instruida a efetuar umainstrução de não operação para manter execução de etapa detrava entre a segunda cadeia de programa e a primeiracadeia de programa até que a segunda cadeia de programaapague a condição de parada.
35. Método, de acordo com a reivindicação 33, emque a primeira cadeia de programa é instruida a parar paramanter execução de etapa de trava entre a segunda cadeia deprograma e a primeira cadeia de programa até que a segundacadeia de programa apague a condição de parada.
36. Registrador de dados para controlar execuçãode duas ou mais cadeias de programa de um processadormultiencadeado, o registrador de dados compreendendo:- um primeiro registrador de enlace de execuçãoem cadeia;- um primeiro campo no primeiro registrador deenlace de execução em cadeia, o primeiro campo associado auma primeira cadeia de programa; e- um segundo campo no primeiro registrador deenlace em cadeia, o segundo campo associado a uma segundacadeia de programa.
37. Registrador de dados, de acordo com areivindicação 36, em que quando um valor do primeiro campoassocia a um valor do segundo campo, a primeira cadeia deprograma é identificada como em execução ligada á segundacadeia de programa.
38. Registrador de dados, de acordo com areivindicação 37, em que quando o valor do primeiro campoassocia ao valor do segundo campo, a primeira cadeia deprograma é identificada para ser executada em um processode multiencadeamento de etapa de trava com a segunda cadeiade programa.
39. Registrador de dados, de acordo com areivindicação 37, em que a primeira cadeia de programainclui uma primeira palavra de instrução muito longa (VLIW)tendo quatro instruções, em que a segunda cadeia deprograma inclui uma segunda VLIW tendo quatro instruções, eem que a primeira cadeia de programa é ligada á segundacadeia de programa para fornecer uma VLIW virtual muitolarga tendo oito instruções.
40. Registrador de dados, de acordo com areivindicação 39, em que a VLIW virtual muito larga éformada a partir da primeira VLIW e segunda VLIW.
41. Conjunto de registradores de dados,compreendendo:- um primeiro registrador de enlace em cadeia;- um segundo registrador de enlace em cadeia; e- um terceiro registrador de enlace em cadeia;em que cada um dos registradores de enlace decadeia compreende:- um primeiro bit de cadeia associado a umaprimeira cadeia de programa;segundo bit de cadeia associado a umasegunda cadeia de programa;- um terceiro bit de cadeia associado a umaterceira cadeia de programa;- um quarto bit de cadeia associado a umaquarta cadeia de programa;- um quinto bit de cadeia associado a umaquinta cadeia de programa; e- um sexto bit de cadeia associado a uma sextacadeia de programa.
42. Conjunto de registradores de dados, de acordocom a reivindicação 41, em que pelo menos um enlace deexecução pode ser estabelecido entre pelo menos duascadeias de programas ao escrever dados para pelo menos umdos registradores de enlace em cadeia.
43. Conjunto de registradores de dados, de acordocom a reivindicação 41, em que um primeiro enlace deexecução pode ser estabelecido entre pelo menos duascadeias de programa ao escrever um valor de dados para pelomenos dois dos bits de cadeia no primeiro registrador deenlace em cadeia.
44. Conjunto de registradores de dados, de acordocom a reivindicação 43, em que um segundo enlace deexecução pode ser estabelecido entre pelo menos duas outrascadeias de programa ao escrever um valor de dados para pelomenos dois dos bits de cadeia no segundo registrador deenlace em cadeia.
45. Conjunto de registradores de dados, de acordocom a reivindicação 44, em que um terceiro enlace deexecução pode ser estabelecido entre pelo menos duas outrascadeias de programa ao escrever um valor de dados para pelomenos dois dos bits de cadeia no terceiro registrador deenlace em cadeia.
46. Palavra virtual de instrução muito longa emuito larga (VLIW), compreendendo:- pelo menos uma primeira VLIW; e- pelo menos uma segunda VLIW ligada á primeirainstrução de palavra de instrução muito longa.
47. VLIW virtual muito larga, de acordo com areivindicação 46, em que a primeira VLIW inclui quatroinstruções e em que a segunda VLIW inclui quatroinstruções.
48. VLIW virtual muito larga, de acordo com areivindicação 47, compreendendo oito instruções.
49. VLIW virtual muito larga, de acordo com areivindicação 46, em que a primeira VLIW é parte de umaprimeira cadeia de programa em um dispositivo processadormultiencadeado, e em que a segunda VLIW é parte de umasegunda cadeia de programa em um dispositivo processadormultiencadeado.
50. Dispositivo de comunicação portátil,compreendendo:- um processador de sinal digital;em que o processador de sinal digital inclui:- uma primeira cadeia de programa; e- uma segunda cadeia de programa;em que a segunda cadeia de programa está emexecução ligada á primeira cadeia de programa, de tal modoque quando a primeira cadeia de programa experimenta umevento de parada, o segundo programa é controlado paramanter o enlace de execução para a primeira cadeia deprograma.
51. Dispositivo assembler de código decomputador, compreendendo:- mecanismos para receber um programa tendo umapluralidade de palavras de instrução muito longas e muitolargas (VLIWs); emecanismos para dividir o programa em umaprimeira parte a ser executada como uma primeira cadeia deprograma e uma segunda parte a ser executada como umasegunda cadeia de programa.
52. Dispositivo processador de sinal digital,compreendendo:mecanismos para detectar que uma primeiracadeia de programa está em execução ligada á uma segundacadeia de programa;- mecanismos para definir um primeiro contador deprograma para uma primeira instrução da primeira cadeia deprograma;- mecanismos para definir um segundo contador deprograma para uma primeira instrução da segunda cadeia deprograma; e- mecanismos para executar a primeira cadeia deprograma em um modo de etapa de trava com a segunda cadeiade programa de modo que cada instrução da segunda cadeia deprograma seja executada em um superciclo no qual umainstrução correspondente da primeira cadeia de programa éexecutada.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/115,917 US7814487B2 (en) | 2005-04-26 | 2005-04-26 | System and method of executing program threads in a multi-threaded processor |
US11/115,917 | 2005-04-26 | ||
PCT/US2006/015390 WO2006116257A2 (en) | 2005-04-26 | 2006-04-24 | System and method of executing program threads in a multi-threaded processor |
Publications (1)
Publication Number | Publication Date |
---|---|
BRPI0610840A2 true BRPI0610840A2 (pt) | 2010-07-27 |
Family
ID=37027702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0610840-7A BRPI0610840A2 (pt) | 2005-04-26 | 2006-04-24 | sistema e método de execução de cadeias de programa em um processador multiencadeado |
Country Status (5)
Country | Link |
---|---|
US (1) | US7814487B2 (pt) |
KR (3) | KR20080005589A (pt) |
BR (1) | BRPI0610840A2 (pt) |
IL (1) | IL186949A0 (pt) |
WO (1) | WO2006116257A2 (pt) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070101102A1 (en) * | 2005-10-27 | 2007-05-03 | Dierks Herman D Jr | Selectively pausing a software thread |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8386822B2 (en) | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8880853B2 (en) | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8250396B2 (en) | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8225120B2 (en) * | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8127080B2 (en) * | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8015379B2 (en) | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8452947B2 (en) | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
JP5395383B2 (ja) | 2008-08-21 | 2014-01-22 | 株式会社東芝 | パイプライン演算プロセッサを備える制御システム |
US8145723B2 (en) | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8082315B2 (en) | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8230201B2 (en) | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8578382B2 (en) * | 2009-05-19 | 2013-11-05 | Qualcomm Incorporated | Associating data for events occurring in software threads with synchronized clock cycle counters |
KR101636377B1 (ko) | 2009-10-23 | 2016-07-06 | 삼성전자주식회사 | 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법 |
US8635492B2 (en) | 2011-02-15 | 2014-01-21 | International Business Machines Corporation | State recovery and lockstep execution restart in a system with multiprocessor pairing |
US8930752B2 (en) | 2011-02-15 | 2015-01-06 | International Business Machines Corporation | Scheduler for multiprocessor system switch with selective pairing |
US8671311B2 (en) | 2011-02-15 | 2014-03-11 | International Business Machines Corporation | Multiprocessor switch with selective pairing |
US9798548B2 (en) * | 2011-12-21 | 2017-10-24 | Nvidia Corporation | Methods and apparatus for scheduling instructions using pre-decode data |
US9639371B2 (en) | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
US9830164B2 (en) * | 2013-01-29 | 2017-11-28 | Advanced Micro Devices, Inc. | Hardware and software solutions to divergent branches in a parallel pipeline |
KR102332523B1 (ko) | 2014-12-24 | 2021-11-29 | 삼성전자주식회사 | 연산 처리 장치 및 방법 |
US10002057B2 (en) | 2016-06-03 | 2018-06-19 | Nxp Usa, Inc. | Method and apparatus for managing mismatches within a multi-threaded lockstep processing system |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
US5860000A (en) * | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US6055628A (en) * | 1997-01-24 | 2000-04-25 | Texas Instruments Incorporated | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks |
AU6586898A (en) | 1997-03-21 | 1998-10-20 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
US6170051B1 (en) * | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
US6718457B2 (en) * | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
KR100300875B1 (ko) | 1998-12-30 | 2001-09-06 | 박종섭 | 캐쉬 미스 시 처리 방법 |
US6523110B1 (en) * | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
US6615366B1 (en) * | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
US7096343B1 (en) | 2000-03-30 | 2006-08-22 | Agere Systems Inc. | Method and apparatus for splitting packets in multithreaded VLIW processor |
US7127588B2 (en) | 2000-12-05 | 2006-10-24 | Mindspeed Technologies, Inc. | Apparatus and method for an improved performance VLIW processor |
JP2005527037A (ja) * | 2002-05-24 | 2005-09-08 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 構成可能なプロセッサ |
US20050050305A1 (en) | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
-
2005
- 2005-04-26 US US11/115,917 patent/US7814487B2/en active Active
-
2006
- 2006-04-24 WO PCT/US2006/015390 patent/WO2006116257A2/en active Application Filing
- 2006-04-24 KR KR1020077027533A patent/KR20080005589A/ko active Search and Examination
- 2006-04-24 KR KR1020097010767A patent/KR20090077964A/ko not_active Application Discontinuation
- 2006-04-24 BR BRPI0610840-7A patent/BRPI0610840A2/pt not_active Application Discontinuation
- 2006-04-24 KR KR1020097010766A patent/KR101183849B1/ko active IP Right Grant
-
2007
- 2007-10-25 IL IL186949A patent/IL186949A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
IL186949A0 (en) | 2008-02-09 |
KR20090077963A (ko) | 2009-07-16 |
WO2006116257A2 (en) | 2006-11-02 |
US7814487B2 (en) | 2010-10-12 |
KR20090077964A (ko) | 2009-07-16 |
WO2006116257A3 (en) | 2007-05-18 |
KR101183849B1 (ko) | 2012-09-18 |
KR20080005589A (ko) | 2008-01-14 |
US20060242645A1 (en) | 2006-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0610840A2 (pt) | sistema e método de execução de cadeias de programa em um processador multiencadeado | |
US9235418B2 (en) | Register files for a digital signal processor operating in an interleaved multi-threaded environment | |
US7584233B2 (en) | System and method of counting leading zeros and counting leading ones in a digital signal processor | |
US8745627B2 (en) | System and method of controlling power in a multi-threaded processor | |
US20060230253A1 (en) | Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment | |
US8688761B2 (en) | Arithmetic logic and shifting device for use in a processor | |
US20080046683A1 (en) | System and method of processing data using scalar/vector instructions | |
US7849466B2 (en) | Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor | |
BRPI0609076A2 (pt) | sistema e método para usar um valor predicado para acessar um arquivo de registro | |
JP2014238859A (ja) | 階層型の超長命令パケットを処理するシステムおよび方法 | |
US20060282238A1 (en) | System and method of performing two's complement operations in a digital signal processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B08F | Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette] |
Free format text: PAGAR RESTAURACAO. |
|
B08H | Application fees: decision cancelled [chapter 8.8 patent gazette] |
Free format text: REFERENTE AO DESPACHO PUBLICADO NA RPI 2260 DE 29/04/2014. |
|
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09B | Patent application refused [chapter 9.2 patent gazette] | ||
B12B | Appeal against refusal [chapter 12.2 patent gazette] |