BRPI0712834A2 - sistema grÁfico com caches configurÁveis - Google Patents

sistema grÁfico com caches configurÁveis Download PDF

Info

Publication number
BRPI0712834A2
BRPI0712834A2 BRPI0712834-7A BRPI0712834A BRPI0712834A2 BR PI0712834 A2 BRPI0712834 A2 BR PI0712834A2 BR PI0712834 A BRPI0712834 A BR PI0712834A BR PI0712834 A2 BRPI0712834 A2 BR PI0712834A2
Authority
BR
Brazil
Prior art keywords
caches
processing units
cache
processing unit
configurable
Prior art date
Application number
BRPI0712834-7A
Other languages
English (en)
Inventor
Chun Yu
Guofang Jiao
Yun Du
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0712834A2 publication Critical patent/BRPI0712834A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory

Abstract

SISTEMA GRÁFICO COM CACHES CONFIGURÁVEIS. Um sistema gráfico inclui um processador gráfico e um sistema de memória de cache. O processador gráfico inclui unidades de processamento que executam várias operações gráficas para renderizar imagens gráficas. O sistema de memória de cache pode incluir caches totalmente configuráveis, caches parcialmente configuráveis ou uma combinação de caches configuráveis e dedicados, O sistema de memória de cache pode incluir ainda uma unidade de controle, uma barra transversal, e um árbitro. A unidade de controle pode determinar utilização de memória pelas unidades de processamento e atribuir os caches configuráveis às unidades de processamento com base em utilização de memória. Os caches configuráveis podem ser atribuíveis para obter boa utilização desses caches e evitar obstáculo de acesso à memória. A barra transversal acopla as unidades de processamento a seus caches atribuidos. O árbitro facilita trocas de dados entre os caches e uma memória principal.

Description

"SISTEMA GRÁFICO COM CACHES CONFIGURÁVEIS"
FUNDAMENTOS
I. Campo
A presente invenção refere-se genericamente a circuitos, e mais especificamente a um sistema gráfico.
II. Fundamentos
Sistemas gráficos sao amplamente utilizados para renderizar imagens bidimensionais (2-D) e tridimensionais (3-D) para várias aplicações como jogos de video, gráficos, desenho auxiliado por computador (CAD), ferramentas de simulação e visualização, imageamento, etc. Uma imagem 3-D pode ser modelada com superfícies, e cada superfície pode ser aproximada com polígonos (tipicamente triângulos). 0 número de triângulos usados para representar uma imagem 3-D depende da complexidade das superfícies bem como da resolução desejada da imagem e pode ser bem grande, por exemplo, na faixa de milhões. Cada triângulo é definido por três vértices, e cada vértice é associado a vários atributos como coordenadas de espaço, valores de cor e coordenadas de textura. Cada atributo pode ter até quatro componentes. Por exemplo, coordenadas de espaço são tipicamente dadas por coordenadas horizontal e vertical (x e y) e profundidade (z), valores de cor são tipicamente dados por vermelho, verde e azul (r, g, b) e coordenadas de textura são tipicamente dadas por coordenadas horizontal e vertical (u e v).
Um processador gráfico em um sistema gráfico pode executar várias operações gráficas para renderizar uma imagem 2-D ou 3-D. A imagem é composta de muitos triângulos, e cada triângulo é composto de elementos de imagem (pixels). 0 processador gráfico renderiza cada triângulo por determinar os valores de componente de cada pixel no triângulo. As operações gráficas podem incluir rasterização, testes de estêncil e profundidade, mapeamento de textura, sombreamento, etc. Uma vez que o processador gráfico executa várias operações gráficas em dados de pxxel, que podem ser quaisquer dados associados a pixels, a capacidade de rapidamente acessar os dados de pixel tem um grande impacto sobre o desempenho.
SUMÁRIO
Sistemas gráficos com caches configuráveis e tendo bom desempenho são descritos aqui. Um sistema gráfico inclui um processador gráfico e um sistema de memória cache. 0 processador gráfico inclui unidades de processamento que executam várias operações gráficas para renderizar imagens gráficas. 0 sistema de memória cache pode incluir caches totalmente configuráveis, caches parcialmente configuráveis, ou uma combinação de caches configuráveis e dedicados. Um cache é totalmente configurável se puder ser atribuído a qualquer uma das unidades de processamento que podem ser atribuídas com caches. Um cache é parcialmente configurável se puder ser atribuído a qualquer um de um subconjunto das unidades de processamento. Um cache é dedicado se for atribuído a uma unidade de processamento específica. Os caches são memórias rápidas que armazenam dados (por exemplo, dados e/ou instruções de pixel) para as unidades de processamento.
0 sistema de memória cache pode incluir ainda uma unidade de controle, uma barra transversal, e um árbitro. A unidade de controle pode determinar utilização de memória pelas unidades de processamento e atribuir os caches configuráveis às unidades de processamento com base na utilização de memória. Os caches configuráveis podem ser atribuídos para obter boa utilização desses caches e evitar obstáculo de acesso à memória em qualquer ponto no processador gráfico. A barra transversal acopla as unidades de processamento aos seus caches atribuídos. 0 árbitro facilita troca de dados entre os caches e uma memória principal.
Vários aspectos e modalidades da invenção são descritos em detalhe adicional abaixo.
BREVE DESCRIÇÃO DOS DESENHOS
As características e natureza da presente invenção tornar-se-ão mais evidentes a partir da descrição detalhada exposta abaixo quando tomada em combinação com os desenhos nos quais caracteres de referência similares identificam de modo correspondente do início ao fim.
A figura 1 mostra um sistema gráfico com caches dedicados.
A figura 2 mostra um sistema gráfico com caches totalmente configuráveis.
A figura 3 mostra uma barra transversal no sistema gráfico na figura 2.
A figura 4 mostra um cache e uma máquina de estado para uma unidade de processamento.
A figura 5 mostra um sistema gráfico com caches configuráveis e dedicados.
A figura 6 mostra um processo para operar um sistema gráfico com caches configuráveis.
A figura 7 mostra um dispositivo sem fio em um sistema de comunicação sem fio.
DESCRIÇÃO DETALHADA
A palavra "exemplar" é utilizada aqui para significar "servir como exemplo, ocorrência ou ilustração." qualquer modalidade ou desenho descrito aqui como "exemplar" não deve ser necessariamente interpretado corno preferido ou vantajoso em relação a outras modalidades ou desenhos. A figura 1 mostra um diagrama de blocos de um sistema gráfico 100 com caches dedicados. O sistema gráfico 100 inclui um processador gráfico 110 e um sistema de memória cache 130. 0 processador gráfico 110 inclui várias unidades de processamento dispostas em um pipeline e utilizadas para renderizar imagens 2-D e 3D. Um motor de comando 120a recebe e decodifica comandos de entrada que especificam as operações gráficas a serem executadas. Um motor de configuração z e posição de triângulo 120b computa parâmetros necessários para o processo de rasterização subseqüente. Por exemplo, o motor 120b pode computar os coeficientes de equações lineares para as três bordas de cada triângulo, os coeficientes para gradiente de profundidade (z), etc. Um motor de rasterização 120c decompõe cada triângulo ou linha em pixels e gera uma coordenada de tela para cada pixel.
Um motor de teste de profundidade e estêncil, 120d executa um teste de estêncil em cada pixel, se habilitado, para determinar se o pixel deve ser exibido ou descartado. Um buffer de estêncil (não mostrado na figura 1) armazena o valor atual de estêncil para cada localização de pixel na imagem sendo renderizada. O motor 120d compara o valor de estêncil armazenado para cada pixel contra um valor de referência e retém ou descarta o pixel com base no resultado da comparação. O motor 120d também executa um teste de profundidade (que também é denominado um teste-z) em cada pixel, se aplicável, para determinar se o pixel deve ser exibido ou descartado. Um buffer-z (não mostrado na figura 1) armazena o valor z atual para cada local de pixel na imagem sendo renderizada. O motor 120d compara o valor z de cada pixel (o valor z atual) contra o valor z correspondente no buffer-z (o valor z armazenado), exibe o pixel e atualiza o buffer-z e possivelmente o buffer de estêncil se o valor z atual for mais próximo/mais perto do que o valor z armazenado, e descarta o pixel se o valor z atual for mais distante do que o valor z armazenado.
Um motor de configuração de atributo 120e computa parâmetros necessários para a interpolação subseqüente de atributos de pixel. Por exemplo, o motor 120e pode computar os coeficientes de equações lineares para interpolação de atributos. Um motor de interpolação de pixel 120f computa valores de componente de atributo para cada pixel em cada triângulo baseado na coordenada de tela de pixel e utilizando a informação a partir do motor 120e. Um motor de mapeamento de textura 120g executa mapeamento de textura, se habilitado, para aplicar textura a cada triângulo. Uma imagem de textura pode ser armazenada em um buffer de textura (não mostrado na figura 1). Os três vértices de cada triângulo podem ser associados a três coordenadas (u, v) na imagem de textura, e cada pixel do triângulo pode ser então associado a coordenadas de textura especificas na imagem de textura. Texturização é obtida por modificar a cor de cada pixel com a cor da imagem de textura no local indicado pelas coordenadas de textura de pixel.
Cada pixel é associado a informações como cor, profundidade, textura, etc. Um fragmento é um pixel e suas informações associadas. Um shader de fragmento 120h aplica programa de software, que pode ser composto de uma seqüência de instruções, para cada fragmento. 0 shader de fragmento 120h pode enviar também solicitações de textura para motor de mapeamento de textura 120g. Um motor de fragmento 120i executa funções como teste alfa, mesclagem de fog, mesclagem alfa, operação lógica e operação de dithering em cada fragmento e provê resultados para um buffer de cor. As operações gráficas mostradas na figura 1 são conhecidas na técnica. Um processador gráfico pode implementar uma interface de software como Open Graphics Library (OpenGL), Direct3D, etc. OpenGL é descrito em um documento intitulado "The OpenGL® Graphics System: A specification", versão 2.0, datado de 22 de outubro de 2004, que é publicamente disponível.
Em geral, um processador gráfico pode incluir qualquer número de unidades de processamento para qualquer conjunto de operações gráficas. Cada unidade de processamento pode ser um motor que é implementado com hardware dedicado, um processador, ou uma combinação de ambos. Por exemplo, os motores mostrados na figura 1 podem ser implementados com hardware dedicado ao passo que o shader de fragmento pode ser implementado com uma unidade de processamento central programável (CPU). As unidades de processamento podem ser dispostas em várias ordens dependendo da otimização desejada. Por exemplo, para conservar energia, pode ser desejável executar testes de estêncil e profundidade cedo no pipeline de modo que pixels que não são visíveis são descartados cedo, como mostrado na figura 1. As unidades de processamento também podem ser dispostas em outras ordens, por exemplo, o motor de teste de profundidade e estêncil 120d pode ser localizado após o motor de mapeamento de textura 120g.
0 sistema de memória cacife 130 inclui caches dedicados 150a até 150f para algukas das unidades de processamento 120 no processador gráfico 110. No desenho mostrado na figura 1, o cache de estêncil 150a armazena valores de estêncil para pixels em uma região da imagem sendo renderizada, e cache de profundidade 150b armazena valores de profundidade para pixels na região igual ou diferente. 0 motor de teste de profundidade e estêncil 120d acessa os valores de estêncil armazenados em cache 150a e executa testes de estêncil utilizando esses valores de estêncil. 0 motor 120d também acessa valores z armazenados em cache 150b e executa testes de profundidade utilizando esses valores z. O cache de textura 150c armazena uma tabela de mapeamento de textura que é utilizado pelo motor de mapeamento de textura 120g para mapear textura em triângulos. O cache de instrução de shader 150d armazena instruções para shader de fragmento 120h, e o cache de dados de shader 150e armazena dados para shader de fragmento 120h. O cache de cor 150f armazena valores de cor (por exemplo, vermelho, verde e azul) para pixels.
Um árbitro 160 acopla a e facilita trocas de dados entre caches 150a até 150f e uma memória principal 170. Um erro de cache é declarado sempre que uma unidade de processamento 120 acessar um cache associado 150 para dados e os dados solicitados não estiverem armazenados no cache. O erro de cache resulta no teor atual do cache sendo armazenado de volta para a memória principal 170, se necessário, e uma região nova de dados sendo buscada a partir da memória principal 170 e carregada no cache. Os dados solicitados podem ser então obtidos a partir do cache e fornecidos à unidade de processamento. O árbitro 160 permite um cache de cada vez para trocar dados com a memória principal 170.
O sistema de memória cache 130 na figura 1 aperfeiçoa o desempenho de acesso de memória para o sistema gráfico 100. Os caches 150 são memórias rápidas, pequenas localizadas próximas ao processador gráfico 110. As memórias rápidas de cache melhoram a velocidade de processamento porque as unidades de processamento 120 podem recuperar dados e armazenar resultados mais rapidamente. A memória principal 170 é uma memória mais lenta, grande localizada mais distante (por exemplo, off-chip) do processador gráfico 110. A memória principal 170 armazena dados e instruções que podem ser carregados em caches 150. Os caches 150 reduzem o número de buscas a partir da memória principal 170 e genericamente melhoram o desempenho do sistema gráfico 100.
A figura 1 mostra o uso de caches dedicados. Cada cache 150 armazena dados ou instruções para uma unidade de processamento especifica 120. A utilização de cada cache 150 depende da aplicação gráfica sendo executada. Por exemplo, uma aplicação gráfica 3-D pode executar somente passagem z, que pode ligar somente o teste de profundidade e/ou estêncil. Para essa aplicação, somente cache de estêncil 150a e/ou cache de profundidade 150b pode ser utilizado e os caches restantes 150c até 150f podem ser ociosos. Como outro exemplo, uma aplicação de shader simples pode não utilizar cache de instruções de shader 150d ou cache de dados de shader 150e e esses caches podem ser ociosos. Ainda como outro exemplo, uma aplicação gráfica pode desabilitar mapeamento de textura, em cujo caso o cache de textura 150c pode não ser necessário. Como visto por esses exemplos, o uso de caches dedicados pode resultar em utilização deficiente dos caches por algumas aplicações gráficas. O uso de caches dedicados pode resultar também em ocorrência de gargalo de acesso à memória em locais diferentes para aplicações gráficas diferentes. 0 obstáculo limita o desempenho do sistema gráfico 100.
A figura 2 mostra uma modalidade de um sistema gráfico 200 com caches totalmente configuráveis. O sistema gráfico 200 inclui um processador gráfico 210 e um sistema de memória cache 230. 0 processador gráfico 210 inclui unidades de processamento 220a até 220i que podem operar como descrito acima para unidades de processamento 120a até 120i, respectivamente, na figura 1. Como mostrado na figura 2, somente algumas das unidades de processamento podem utilizar caches para armazenar dados e/ou instruções. Em particular, caches podem ser utilizados para armazenar valores de estêncil e/ou profundidade para o motor de teste de estêncil e profundidade 220d, dados de textura para o motor de mapeamento de textura 220g, instruções e/ou dados para shader de fragmento 220h, e valores de cor para o motor de fragmento 220i.
0 sistema de memória de cache 230 inclui caches totalmente conf iguráveis N 250a até 250n que podem ser atribuídos para armazenar dados e/ou instruções para unidades de processamento 220 no processador gráfico 210, onde em geral N ≥ 1. Os caches são totalmente configuráveis em que cada cache pode ser atribuído a qualquer unidade de processamento que pode ser atribuída com caches. Em uma modalidade, cada cache 250 pode ser atribuída a somente uma unidade de processamento 220, porém uma dada unidade de processamento 220 pode ser atribuída com zero, um ou múltiplos caches 250. Uma unidade de controle 232 atribui os caches disponíveis 250a até 250n para o motor de teste de estêncil e profundidade 220d, motor de mapeamento de textura 220g, shader de fragmento 220h, e/ou motor de fragmento 220i com base em utilização de memória por essas unidades de processamento. Uma barra transversal 240 acopla unidades de processamento 220d, 220g, 220h e 220i a seus caches atribuídos 250a até 250n. Um árbitro 260 acopla caches 250a até 250n a uma memória principal 270 e facilita trocas de dados entre os caches e a memória principal. O árbitro 260 também pode ser mencionado como um seletor, uma interface de memória ou alguma outra terminologia. Em geral, um sistema de memória cache pode incluir qualquer número de caches que pode ser de quaisquer tamanhos. O número de caches e seus tamanhos podem ser selecionados com base em uma compensação entre desempenho de acesso de memória e área de circuito. Tamanhos de cache maior resultam em taxas de acerto de cache mais elevadas e maior probabilidade dos dados solicitados serem armazenados nos caches. Entretanto, tamanhos de cache maior também requerem mais área de circuito, que pode aumentar o custo. Em uma modalidade especifica, o sistema de memória cache 230 inclui doze caches 250, e cada cache tem quatro kilobytes. Em outras modalidades, um número menor de caches ou caches adicionais bem como outros tamanhos de cache podem ser utilizados para o sistema de memória de cache.
A figura 3 mostra um diagrama de blocos de uma modalidade de barra transversal 240 na figura 2. Nessa modalidade, a barra transversal 240 inclui unidades de interface K 310a até 310k, onde em geral K pode ser qualquer valor de número inteiro. As unidades de interface também podem ser mencionadas como unidades mestre ou alguma outra terminologia. Na modalidade mostrada na figura 2, K é igual a seis, e as seis unidades de interface são para estêncil, profundidade, textura, instrução de shader, dados de shader e cor. Uma dada unidade de processamento 220 pode interagir com uma ou múltiplas unidades de interface 310, dependendo das exigências de dados da unidade de processamento. A barra transversal 240 inclui ainda K multiplexadores (Mux) 340a até 340k para as unidades de interface K 310a até 310k, respectivamente, e N multiplexadores 350a até 350n para os N caches 250a até 250n, respectivamente.
Cada unidade de interface 310 acopla-se a uma unidade de processamento associada 220 através de um conjunto respectivo de linhas 302. Cada unidade de interface 310 inclui uma máquina de estado 320 e uma unidade de entrada/saida (I/O) 330. Para cada unidade de interface 310, a unidade I/O 330 recebe dados de endereço e/ou saida a partir da unidade de processamento associada 220 via linhas 302 e provê o endereço/dados para uma entrada de cada de N multiplexadores 350a até 350n. A unidade I/O 330 também recebe dados de entrada ou instruções a partir de um multiplexador associado 340 e provê os dados/instruções para a unidade de processamento associada 220 via linhas 302.
Cada multiplexador 350 recebe endereço/dados a partir de todas as unidades I/O K 330a até 330k em entradas K. Cada multiplexador 350 também recebe um controle respectivo Cn a partir da unidade de controle 232 e provê o endereço/dados a partir de uma entrada, como determinado pelo controle Cn, ao cache associado 250. Cada multiplexador 350 desse modo acopla uma unidade de interface 310 ao cache associado 250.
Cada multiplexador 340 recebe dados de entrada ou instruções a partir de todos os caches N 250a até 250n em entradas N. Cada multiplexador 340 também recebe um controle respectivo Pk a partir da unidade de controle 232 e provê os dados/instruções a partir de uma entrada, como determinado pelo controle Pk, para a unidade I/O associada 330. Cada multiplexador 340 acopla desse modo um cache 250 à unidade de interface associada 310.
Cada cache 250 recebe um endereço a partir do multiplexador associado 350 e determina se os dados/instrução solicitados naquele endereço são armazenados no cache. Cada cache 250 provê um indicador de acerto/erro (h/m) que indica um acerto de cache (por exemplo, lógica elevada) se os dados/instrução solicitados forem armazenados no cache ou um erro de cache (por exemplo, lógica baixa) se os dados/instrução solicitados não forem armazenados no cache. Cada cache 250 prove os dados/instrução solicitados se houver um acerto de cache. Cada cache 250 espera por uma busca a partir da memória principal 270 e então provê os dados/instrução solicitados se houver um erro de cache.
Para cada unidade de interface 310, a máquina de estado 320 recebe os indicadores de acerto/erro a partir de todos os N caches 250a até 250n e um Mk de controle que indica quais caches, caso haja, foram atribuídos àquela unidade de interface. A máquina de estado 320 determina se os dados/instrução solicitados são armazenados em quaisquer dos caches atribuídos com base nos indicadores de acerto/erro para os caches atribuídos. A máquina de estado 320 gera um comando de busca se a instrução/dados solicitados não forem armazenados em qualquer um dos caches atribuídos.
A unidade de controle 232 gera controles Ml até MK para máquinas de estado 320a até 320k, respectivamente, controles Pl até PK para multiplexadores 340a até 340k, respectivamente, e controles Cl até CN para multiplexadores 350a até 350n, respectivamente. Esses controles determinam quais caches, caso haja, são atribuídos a cada unidade de interface 310.
A figura 3 mostra uma modalidade de barra transversal 240 para caches totalmente configuráveis. Em geral, a total capacidade de configuração dos caches pode ser obtida pelo uso de multiplexadores com número suficiente de entradas, projeto das máquinas de estado para avaliar qualquer atribuição de cache possível e geração dos controles adequados para as máquinas de estado e multiplexadores. A barra transversal 240 pode ser implementada também com outros desenhos que podem mapear as unidades de processamento para os caches disponíveis.
A figura 4 mostra um diagrama de blocos de uma modalidade de cache 250n e máquina de estado 320 para unidade de interface 310k na figura 3. O cache 250n inclui um controlador de cache 410, uma tag RAM 420, e uma RAM de dados 430. O controlador de cache 410 executa checagem de endereço para cada acesso de cache 250n e assegura que a instrução/dados corretos estão sendo acessados. A tag RAM 420 fica de olho em quais dados/instruções estão atualmente armazenados no cache 250n. A RAM de dados 430 armazena os dados/instruções. Cada linha de RAM de dados 430 pode armazenar dados para um ou mais pixels ou uma ou mais instruções dependendo de se o cache 250n é configurado para armazenar dados ou instruções.
O cache 250 η pode ser implementado com uma estrutura de cache de mapa direto ou uma estrutura de cache associada ao conjunto modo-M. Para a estrutura de cache de mapa direto, cada linha de uma memória no próximo nível (por exemplo, memória principal 270) pode ser mapeada para somente uma linha de RAM de dados 430. Cada linha de RAM de dados 430 (ou cada linha de cache) é associada a um indicador na tag RAM 420 que identifica a linha específica da memória principal 270 sendo armazenada naquela linha de cache. Como exemplo, se a memória principal 270 tiver 256k linhas e RAM de dados 430 tiver 4k linhas, então cada linha de cache é associada a um endereço de 12 bits específico, e 32 linhas da memória principal 270 são mapeadas para cada linha de cache. A linha específica da memória principal 270 sendo armazenada em cada linha de cache pode ser então identificada por um endereço de 12 bits para a linha de cache e um indicador de 5 bits que indica qual das 32 linhas da memória principal 270 é armazenada na linha de cache. Para a estrutura cache associada do conjunto modo-M, cada linha da memória principal 270 pode ser mapeada para qualquer uma de M linhas possíveis de RAM de dados 430. Em geral, a estrutura de indicador pode ser dependente do tamanho de memória principal, tamanho de cache, estrutura de cache, tamanho de cada linha de cache, e/ou outros fatores.
A tag RAM 420 armazena um indicador para cada linha de RAM de dados 430 e é atualizada sempre que qualquer linha na RAM de dados 430 for substituída. O indicador para cada linha de cache indica a linha da memória principal 270 sendo armazenada naquela linha de cache. Na unidade de controle 410, um parser de endereço 412 recebe a partir do multiplexador 350n um endereço para um acesso de memória por uma unidade de processamento 220, realiza parse do endereço para obter um indicador alvo e um endereço de linha de cache, provê o endereço de linha cache para a tag RAM 420, e provê o tag alvo para uma lógica de comparação 414. A tag RAM 420 provê o indicador armazenado para o endereço de linha cache a partir do parser 412. A lógica de comparação 414 compara o indicador armazenado contra o tag alvo, indica um acerto de cache se os tags forem iguais, e indica um erro de cache se os tags forem diferentes. A RAGM de indicador 420 pode ser acessada múltiplas vezes se cache 250n implementar a estrutura cache associada de conjunto modo-M.
A unidade de acesso de memória 416 manipula acesso de RAM de dados 430 quando há um acerto de cache. Se o acesso de memória for uma leitura, então a RAM de dados 430 é acessada para ler os dados/instrução armazenados no endereço de linha de cache. Se o acesso de memória for uma gravação, então a RAM de dados 430 é gravada no endereço de linha de cache e um "bit sujo" de cache é atualizado para indicar que a linha cache foi gravada, de modo que a linha será gravada de volta para a memória principal 270 antes de ser substituída.
A máquina de estado 320 para a unidade de interface 310k determina se a instrução/dados solicitados são armazenados em qualquer cache atribuído àquela unidade de interface. Na máquina de estado 320, um mapeador 450 recebe o MK de controle a partir da unidade de controle 232 e gera N sinais de habilitação para os N caches 250a até 250n. Cada sinal de habilitação é definido para lógica elevada se o cache associado 250 for atribuído à unidade de interface 310k. N portas AND 452a até 452n recebem os N sinais de habilitação e N indicadores de acerto/erro a partir de N caches 250a até 250n, respectivamente. Cada porta AND 452 provê (1) uma lógica baixa se seu sinal de habilitação estiver em lógica baixa, que indica que o cache associado 250 não é atribuído à unidade de interface 310k, ou (2) o indicador de acerto/erro a partir do cache associado 250 se o sinal de habilitação estiver em lógica elevada, que indica que o cache é atribuído à unidade de interface 310kr Uma porta OR 454 recebe as saídas de portas AND 452a até 452n e gera um indicador de acerto para a unidade de interface 310k.
Uma unidade de preenchimento de cache 4 60 orienta um preenchimento de cache de um dos caches atribuídos para a unidade de interface 310k quando há um erro de cache. Em uma modalidade, um cache atribuído que é utilizado menos recentemente (LRU), isto é, não usado para o tempo mais longo, é selecionado para o preenchimento de cache. A unidade de preenchimento de cache 4 60 pode encher toda ou uma parte do cache selecionado com novos dados/instruções a partir da memória principal 270. A unidade de interface 310k pode ser parada enquanto a linha cache alvo é cheia a partir da memória principal 270 e a tag RAM do cache selecionado é atualizado para refletir os novos dados/instruções carregados na RAM de dados.
Um sistema gráfico com caches totalmente configuráveis provê a maior flexibilidade em termos de atribuir caches a unidades de processamento. Uma dada unidade de processamento pode ser atribuída com zero, um, múltiplo ou mesmo todos os caches disponíveis, dependendo das exigências de dados das unidades de processamento. Os caches disponíveis podem ser atribuídos às unidades de processamento em um modo para obter boa utilização dos caches e evitar obstáculo de acesso à memória em qualquer lugar no processador gráfico independente da aplicação gráfica sendo executada. Os caches disponíveis podem ser atribuídos de forma inteligente a unidades de processamento como descrito abaixo.
Em muitas ocorrências, bom desempenho pode ser obtido com caches parcialmente configuráveis. Os caches são parcialmente configuráveis em que cada cache pode ser atribuído a um de um subconjunto de unidades de processamento. Estudos foram executados em várias aplicações gráficas para determinar os benefícios de utilizar caches para diferentes operações gráficas. Esses estudos indicam que caches são muito úteis em aumentar o desempenho de testes de profundidade e estêncil e mapeamento de textura para muitas aplicações gráficas e são de um certo modo benéficos para cor e shader. Conseqüentemente, um sistema de memória de cache pode ser projetado com muitos dos caches disponíveis sendo configuráveis para testes de profundidade e estêncil e mapeamento de textura e somente alguns dos caches sendo configuráveis para cor e shader. 0 emprego de caches parcialmente configuráveis pode simplificar os desenhos da unidade de controle que atribui os caches configuráveis bem como a barra transversal que acopla as unidades de processamento a seus caches atribuídos.
A figura 5 mostra uma modalidade de um sistema gráfico 500 com caches configuráveis e dedicados. O sistema gráfico 500 inclui um processador gráfico 510 e um sistema de memória cache 530. 0 processador gráfico 510 pode incluir unidades de processamento que operam como descrito acima para unidades de processamento 120a até 120i na figura 1. Em particular, o processador gráfico 510 pode incluir um motor de teste de estêncil e profundidade, um motor de mapeamento de textura, um shader de fragmento, e um motor de fragmento que pode utilizar dados e/ou instruções armazenadas em caches.
Na modalidade mostrada na figura 5, o sistema de memória cache 530 inclui R caches parcialmente configuráveis 550a até 550r e um cache dedicado 550s, onde em geral R ≥ 1. A tabela 1 mostra atribuições possíveis de cada um dos caches 550a até 550s, onde cada "X" indica uma atribuição válida de cache. Como mostrado na tabela 1, cada um dos P caches parcialmente configuráveis 550a até 550p pode ser atribuído para teste de estêncil, teste de profundidade, ou mapeamento de textura. O cache parcialmente configurável 550q pode ser atribuído para instrução de shader, teste de estêncil, teste de profundidade ou mapeamento de textura. O cache parcialmente configurável 550r pode ser atribuído para dados de shader, teste de estêncil, teste de profundidade, ou mapeamento de textura. O cache dedicado 550s é utilizado para armazenar valores de cor para o motor de fragmento. Em uma modalidade, P = 8, e até 10 caches podem ser atribuídos para teste de estêncil, teste de profundidade, e/ou mapeamento de textura, considerando que caches 550q e 550r não são utilizados para dados e instruções de shader. Um número menor de caches ou caches adicionais também podem ser utilizados para o sistema de memória de cache 530.
Tabela 1
<table>table see original document page 19</column></row><table>
Uma unidade de controle 532 atribui os caches configuráveis 550a até 550r ao motor de teste de profundidade e estêncil, o motor de mapeamento de textura, e/ou o shader de fragmento com base em utilização de memória por essas unidades de processamento. Uma barra transversal 540 acopla as unidades de processamento aos seus caches atribuídos 550a até 550r. Um árbitro 560 acopla caches 550a até 550s a uma memória principal 570.
A figu ra 5 também mostra uma modalidade de barra transversal 540. Nessa modalidade, a barra transversal 540 inclui unidades de interface 580a até 580c para teste de estêncil, teste de profundidade, mapeamento de textura, instrução de shader, e dados de shader, respectivamente. A unidade de interface 580a acopla o motor de teste de estêncil e profundidade a caches atribuídos para teste de estêncil, caso haja, entre caches 550a até 550r. A unidade de interface 580b acopla o motor de teste de profundidade e estêncil a caches atribuídos para teste de profundidade, caso haja, entre caches 550a até 550r. A unidade de interface 580c acopla o motor de mapeamento de textura a caches atribuídos, caso haja, entre caches 550a até 550r. A unidade de interface 580d acopla o shader de fragmento a cache 550q, se atribuído. A unidade de interface 580e acopla o shader de fragmento a cache 550r, se atribuído. Cada unidade de interface 580 pode incluir uma máquina de estado e uma unidade I/O, por exemplo, como mostrado na figura 3. Para simplicidade, os multiplexadores para as unidades de interface e os multiplexadores para os caches não são mostrados na figura 5.
A figura 5 mostra uma modalidade específica de um sistema de memória de cache com caches configuráveis e dedicados. Em geral, um sistema de memória cache pode incluir qualquer número de caches configuráveis e qualquer número de caches dedicados. Os caches configuráveis podem ser utilizados para qualquer conjunto de operações gráficas, e os caches dedicados podem ser também utilizados para qualquer conjunto de operações gráficas. 0 uso de caches tanto configuráveis como dedicados pode simplificar os desenhos da unidade de controle e barra transversal.
Nas modalidades mostradas nas figuras 2 e 5, a unidade de controle pode atribuir os caches configuráveis às unidades de processamento de várias maneiras. Em uma modalidade, a unidade de controle atribui caches para cada imagem gráfica ou quadro a ser renderizado com base em utilização de memória em um quadro/imagem anterior. A unidade de controle pode determinar utilização de memória por contagem do número de acessos de memória feitos por cada unidade de processamento, o número de acertos de cache para cada cache, o número de erros de cache para cada cache, etc. A unidade de controle pode então atribuir mais caches a unidades de processamento com utilização de memória elevada e um número menor ou nenhum cache para as unidades de processamento com baixa utilização de memória. Em outra modalidade, a unidade de controle atribui os caches configuráveis às unidades de processamento com base em coerência de quadros/imagens gráficas. Coerência se refere à quantidade de alterações em quadros 2D/3D consecutivos. Um número menor de caches pode ser atribuído para coerência mais elevada quando quadros são mais prováveis de renderizar conteúdo similar, e mais caches podem ser atribuídos para menos coerência.
Ainda em outra modalidade, a unidade de controle atribui os caches configuráveis às unidades de processamento com base em características da aplicação gráfica sendo executada. Por exemplo, se o sistema gráfico estiver executando uma aplicação gráfica 2-D, então o teste de profundidade pode não ser necessário, e nenhum cache pode ser atribuído para teste de profundidade. No outro extremo, se uma aplicação gráfica 3-D utilizar somente passagem z, então todos os caches configuráveis podem ser atribuídos ao teste de profundidade. Como outro exemplo, se um programa de shader simples estiver sendo executado e todas as instruções de shader puderem ser armazenadas no shader de fragmento, então nenhum cache pode ser atribuído ao shader de fragmento.
Ainda em outra modalidade, a unidade de controle atribui dinamicamente os caches configuráveis. Por exemplo, a unidade de controle pode atribuir um ou mais caches a uma unidade de processamento quando solicitações de dados são enviadas pela unidade de processamento. A unidade de controle pode ajustar o número de caches atribuídos à unidade de processamento com base no número de solicitações, estatísticas de erro/acerto de cache, e/ou outros fatores, que podem ser determinados em movimento. Operações de nivelar e invalidar podem ser executadas em movimento para um cache que é comutado ou reatribuído a partir de uma unidade de processamento para outra unidade de processamento.
Ainda em outra modalidade, a unidade de controle atribui caches utilizando uma combinação de atribuições estática e dinâmica. Por exemplo, a unidade de controle pode pré-atribuir um ou mais caches para uma dada unidade de processamento no inicio de renderizar um quadro, imagem, ou lote, por exemplo, com base em estatística atual em utilização de memória pela unidade de processamento. A unidade de controle pode ajustar a atribuição de cache a essa unidade de processamento durante a renderização do quadro, imagem, ou lote, por exemplo, periodicamente. A nova atribuição de cache para cada período de renderização pode ser determinada com base na estatística obtida para o período de renderização anterior.
A unidade de controle pode também atribuir os caches configuráveis com base em outros critérios. A unidade de controle pode atribuir caches em cada imagem/quadro, sempre que alterações em utilização de memória forem detectadas, quando uma aplicação gráfica é primeiramente executada, e/ou em outros momentos.
Para simplicidade, as figuras 1 até 5 mostram os sistemas de memória de cache incluindo um banco de caches. Um cache pode ser implementado com um bloco de memória. Um cache ou um sistema de memória cache também pode ser implementado com uma estrutura hierárquica tendo múltiplos níveis, por exemplo, nível 1, nível 2, nível 3, etc. Os caches em um nível inferior (por exemplo, nível 1) tendem a ser mais rápidos porém menores do que os caches em um nível mais elevado (por exemplo, nível 2). Os caches em cada nível podem ser cheios pelos caches no nível mais elevado seguinte sempre que ocorrerem erros de cache. 0 número de níveis, o número de caches em cada nível e os tamanhos de cache para os diferentes níveis podem ser fixos ou configuráveis. Por exemplo, o número de níveis, o número de caches em cada nível, e/ou os tamanhos de cache podem ser selecionados para obter bom desempenho e podem ser conf iguráveis com base nas características das aplicações gráficas.
A figura 6 mostra uma modalidade de um processo 600 para operar um sistema gráfico com caches configuráveis. A utilização de memória por uma pluralidade de unidades de processamento configuradas para executar operações gráficas para renderizar imagens gráficas é determinada (bloco 612). A utilização de memória pode ser determinada por monitorar acessos de memória feitos pelas unidades de processamento, por determinar as características da aplicação gráfica sendo executada, e/ou em outros modos. Uma pluralidade de caches é atribuída a pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento com base em utilização de memória (bloco 614). Cada unidade de processamento pode ser atribuída com zero, um, múltiplo ou todos os caches dependendo de (1) utilização de memória por aquela unidade de processamento bem como de outras unidades de processamento e (2) os caches disponíveis para atribuição para aquela unidade de processamento. A utilização de memória pode ser determinada com base em várias estatísticas como, por exemplo, solicitações de dados pela unidade de processamento, estatísticas de erro/acerto de cache, etc. A atribuição de cache pode ser executada periodicamente (por exemplo, cada quadro/imagem gráfica), sempre que uma alteração em utilização de memória for detectada, etc. Os caches também podem ser reatribuir durante renderização de uma imagem/quadro com base em alterações detectadas em utilização de memória. Cada de pelo menos uma unidade de processamento é acoplada a um conjunto respectivo de caches atribuídos à unidade de processamento, por exemplo, via uma unidade de interface respectiva (bloco 616).
0 sistema gráfico e caches configuráveis descritos aqui podem ser utilizados para comunicação sem fio, computação, funcionamento em rede, eletrônica pessoal, etc. Um uso exemplar de um sistema gráfico com caches configuráveis para comunicação sem fio é descrito abaixo.
A figura 7 mostra um diagrama de blocos de uma modalidade de um dispositivo sem fio 700 em um sistema de comunicação sem fio. 0 dispositivo sem fio 700 pode ser um telefone celular, um terminal, um handset, um assistente pessoal digital (PDA), ou algum outro dispositivo. O sistema de comunicação sem fio pode ser um sistema de Acesso múltiplo por divisão de código (CDMA), um Sistema Global para Comunicações móveis (GSM), ou algum outro sistema.
0 dispositivo sem fio 700 é capaz de fornecer comunicação bidirecional via um percurso de recepção e um percurso de transmissão. No percurso de recepção, os sinais transmitidos pelas estações base são recebidos por uma antena 712 e fornecidos a um receptor (RCVR) 714. O receptor 714 condiciona e digitaliza o sinal recebido e provê amostras a uma seção digital 720 para processamento adicional. No percurso de transmissão, um transmissor (TMTR) 716 recebe dados a serem transmitidos a partir da seção digital 720, processa e condiciona os dados, e gera um sinal modulado, que é transmitido via antena 712 para as estações base.
A seção digital 720 inclui várias unidades de interface e processamento como, por exemplo, um processador de modem 722, um processador de vídeo 724, um processador de aplicação 726, um processador de display 728, um controlador/processador 730, um processador gráfico 740, e uma interface de barramento externa (EBI) 760. O processador de modem 722 executa processamento para transmissão e recepção de dados (por exemplo, codificação, modulação, demodulação e decodificação). O processador de video 724 executa processamento em conteúdo de video (por exemplo, imagens fixas, vídeos em movimento, e textos em movimento) para aplicações de vídeo como camcorder, reprodução de vídeo e conferência de vídeo. O processador de aplicação 726 executa processamento para várias aplicações como chamadas em vários modos, navegação em rede, tocador de mídia, e interface de usuário. O processador de display 728 executa processamento para facilitar o display de vídeos, gráficos, e textos em uma unidade de display 780. 0 controlador/processador 730 pode dirigir a operação de várias unidades de interface e processamento na seção digital 720.
O processador gráfico 740 executa o processamento para aplicações gráficas e pode ser implementado como descrito acima. Um sistema de memória cache 750 armazena dados e/ou instruções para processador gráfico 740 e pode ser implementado com caches configuráveis e possivelmente caches dedicados. O sistema de memória cache 750 pode incluir ainda uma barra transversal que acopla os caches configuráveis às unidades de processamento no processador gráfico 740 e um árbitro que acopla os caches a uma memória principal 770 via um barramento 732 e EBI 760. A EBI 760 facilita a transferência de dados entre seção digital 720 (por exemplo, os caches) e memória principal 770.
A seção digital 720 pode ser implementada com um ou mais processadores de sinais digitais (DSPs), microprocessadores, computadores de conjunto de instrução reduzida (RISCs) , etc. A seção digital 720 também pode ser fabricada em um ou mais circuitos integrados de aplicação específica (ASICs) ou algum outro tipo de circuitos integrados (ICs).
Os sistemas gráficos e caches configuráveis descritos aqui podem ser implementados em várias unidades de hardware. Por exemplo, os sistemas gráficos e caches configuráveis podem ser implementados em ASICs, dispositivo de processamento de sinal digital (DSPDs), dispositivos lógicos programáveis (PLDs), disposição de porta programável em campo (FPGAs), processadores, controladores, microcontroladores, microprocessadores, e outras unidades eletrônicas.
Certas posições dos sistemas gráficos podem ser implementadas em firmware e/ou software. Por exemplo, a unidade de controle pode ser implementada com firmware e/ou módulos de software (por exemplo, procedimentos, funções e assim por diante) que executam as funções descritas aqui. Os códigos de firmware e/ou software podem ser armazenados em uma memória (por exemplo, memória 770 na figura 7) e executados por um processador (por exemplo, processador 730). A memória pode ser implementada no processador ou externo ao processador.
A descrição anterior das modalidades reveladas é fornecida para permitir que qualquer pessoa versada na técnica faça ou utilize a presente invenção. Várias modificações nessas modalidades serão prontamente evidentes para aqueles versados na técnica, e os princípios genéricos definidos aqui podem ser aplicados em outras modalidades sem se afastar do espírito ou escopo da invenção. Desse modo, a presente invenção não pretende ser limitada às modalidades mostradas aqui porém deve ser acordada o escopo mais amplo compatível com os princípios e aspectos novos revelados aqui.

Claims (34)

1. Equipamento compreendendo: uma pluralidade de unidades de processamento configuradas para realizar operações gráficas para renderizar imagens gráficas; uma pluralidade de caches configurados para armazenar dados para pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento; e uma barra transversal configurada para acoplar a pluralidade de caches a referida pelo menos uma unidade de processamento.
2. Equipamento, de acordo com a reivindicação 1, em que cada um da pluralidade de caches é atribuível a qualquer uma da pluralidade de unidades de processamento.
3. Equipamento, de acordo com a reivindicação 1, em que cada um da pluralidade de caches é atribuível a qualquer um de um subconjunto respectivo da pluralidade de unidades de processamento.
4. Equipamento, de acordo com a reivindicação 1, em que a pluralidade de caches compreende um ou mais caches dedicados atribuídos a uma ou mais unidades de processamento e pelo menos um cache configurável atribuível a unidades de processamento restantes.
5. Equipamento, de acordo com a reivindicação 4, em que cada cache configurável é atribuível a qualquer um de um subconjunto respectivo das unidades de processamento restantes.
6. Equipamento, de acordo com a reivindicação 4, em que as unidades de processamento restantes compreendem um motor de teste de profundidade e um motor de mapeamento de textura.
7. Equipamento, de acordo com a reivindicação 1, compreendendo adicionalmente: uma unidade de controle configurada para averiguar utilização de memória pela pluralidade de unidades de processamento e para atribuir a pluralidade de caches a pelo menos uma unidade de processamento com base em utilização de memória.
8. Equipamento, de acordo com a reivindicação 7, em que a unidade de controle é configurada para atribuir a pluralidade de caches para cada imagem gráfica a ser renderizada com base em utilização de memória para uma imagem gráfica anterior.
9. Equipamento, de acordo com a reivindicação 7, em que a unidade de controle é configurada para averiguar a utilização de memória com base em solicitações de dados pelas unidades de processamento, estatísticas de erro/acerto de cache, ou uma combinação dos mesmos.
10. Equipamento, de acordo com a reivindicação 7, em que a unidade de controle é configurada para detectar alterações em utilização de memória pela pluralidade de unidades de processamento durante renderização de uma imagem e para reatribuir a pluralidade de caches com base nas alterações detectadas em utilização de memória.
11. Equipamento, de acordo com a reivindicação 1, compreendendo adicionalmente: uma unidade de controle configurada para atribuir a pluralidade de caches a pelo menos uma unidade de processamento com base em utilização de memória por uma aplicação gráfica sendo executada.
12. Equipamento, de acordo com a reivindicação 1, em que a barra transversal compreende: uma pluralidade de unidades de interface, cada unidade de interface configurada para acoplar uma unidade de processamento associada a um conjunto de caches atribuídos à unidade de processamento.
13. Equipamento, de acordo com a reivindicação 12, em que cada unidade de interface compreende: uma máquina de estado configurada para determinar se dados solicitados pela unidade de processamento associada são armazenados em qualquer um do conjunto de caches atribuídos à unidade de processamento.
14. Equipamento, de acordo com a reivindicação 13, em que a máquina de estado para cada unidade de interface recebe indicadores de erro/acerto de cache a partir da pluralidade de caches e um controle indicando o conjunto de caches atribuídos à unidade de processamento associado.
15. Equipamento, de acordo com a reivindicação 13, em que a máquina de estado para cada unidade de interface é configurada para preencher um do conjunto de caches atribuídos à unidade de processamento associado quando ocorre um erro de cache.
16. Equipamento, de acordo com a reivindicação 1, em que a pluralidade de caches é disposta em uma estrutura hierárquica com pelo menos dois níveis de caches.
17. Equipamento, de acordo com a reivindicação 16, em que pelo menos um nível na estrutura hierárquica tem um número configurável de caches.
18. Equipamento, de acordo com a reivindicação 16, em que pelo menos um nível na estrutura hierárquica tem tamanhos de cache configuráveis.
19. Equipamento, de acordo com a reivindicação 1, em que a pluralidade de caches é disposta em um número configurável de níveis em uma estrutura hierárquica.
20. Equipamento, de acordo com a reivindicação 1, em que a pluralidade de caches tem tamanhos de cache configuráveis.
21. Equipamento, de acordo com a reivindicação 1, compreendendo adicionalmente: um árbitro acoplado à pluralidade de caches e configurável para facilitar trocas de dados entre a pluralidade de caches e uma memória principal.
22. Equipamento, de acordo com a reivindicação 1, em que a pluralidade de unidades de processamento compreende um motor de teste de profundidade e um motor de mapeamento de textura.
23. Equipamento, de acordo com a reivindicação 22, em que a pluralidade de unidades de processamento é disposta em um pipeline, e em que o motor de teste de profundidade é localizado mais cedo no pipeline do que o motor de mapeamento de textura.
24. Circuito integrado compreendendo: uma pluralidade de unidades de processamento configuradas para realizar operações gráficas para renderizar imagens gráficas; uma pluralidade de caches configurados para armazenar dados para pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento; e uma barra transversal configurada para acoplar a pluralidade de caches a pelo menos uma unidade de processamento.
25. Circuito integrado, de acordo com a reivindicação 24, em que cada uma da pluralidade de caches é atribuível a qualquer um de um respectivo subconjunto da pluralidade de unidades de processamento.
26. Circuito integrado, de acordo com a reivindicação 24, compreendendo adicionalmente: uma unidade de controle configurada para averiguar utilização de memória pela pluralidade de unidades de processamento e atribuir a pluralidade de caches a pelo menos uma unidade de processamento com base em utilização de memória.
27. Dispositivo sem fio compreendendo: um processador gráfico compreendendo uma pluralidade de unidades de processamento configuradas para executar operações gráficas para renderizar imagens gráficas; e um sistema de memória cache compreendendo: uma pluralidade de caches configurados para armazenar dados para pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento, e uma barra transversal configurada para acoplar a pluralidade de caches a pelo menos uma unidade de processamento.
28. Dispositivo sem fio, de acordo com a reivindicação 27, em que o sistema de memória cache compreende adicionalmente: um árbitro acoplado à pluralidade de caches e configurado para facilitar trocas de dados entre a pluralidade de caches e uma memória principal.
29. Método compreendendo: determinar utilização de memória por uma pluralidade de unidades de processamento configuradas para realizar operações gráficas para renderizar imagens gráficas; atribuir uma pluralidade de caches a pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento com base em utilização de memória pela pluralidade de unidades de processamento; e acoplar cada uma de pelo menos uma unidade de processamento a um conjunto respectivo dos caches atribuídos à unidade de processamento.
30. Método, de acordo com a reivindicação 29, compreendendo adicionalmente: acoplar um ou mais caches diretamente a uma ou mais unidades de processamento entre a pluralidade de unidades de processamento.
31. Método, de acordo com a reivindicação 29, em que a atribuição da pluralidade de caches compreende: atribuir a pluralidade de caches a pelo menos uma unidade de processamento para cada imagem gráfica a ser renderizada com base em utilização de memória para uma imagem gráfica anterior.
32. Equipamento compreendendo: meios para determinar utilização de memória por uma pluralidade de unidades de processamento configuradas para realizar operações gráficas para renderizar imagens gráficas; meios para atribuir uma pluralidade de caches a pelo menos uma unidade de processamento entre a pluralidade de unidades de processamento com base em utilização de memória pela pluralidade de unidades de processamento; e meios para acoplar cada de pelo menos uma unidade de processamento a um conjunto respectivo dos caches atribuídos à unidade de processamento.
33. Equipamento, de acordo com a reivindicação 32, compreendendo adicionalmente: meios para acoplar um ou mais caches diretamente a uma ou mais unidades de processamento entre a pluralidade de unidades de processamento.
34. Equipamento, de acordo com a reivindicação 32, em que os meios para atribuir a pluralidade de caches compreendem: meios para atribuir a pluralidade de caches a pelo menos uma unidade de processamento para cada imagem gráfica a ser renderizada com base em utilização de memória para uma imagem gráfica anterior.
BRPI0712834-7A 2006-04-26 2007-04-24 sistema grÁfico com caches configurÁveis BRPI0712834A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/412,678 US8766995B2 (en) 2006-04-26 2006-04-26 Graphics system with configurable caches
US11/412678 2006-04-26
PCT/US2007/067325 WO2007127745A1 (en) 2006-04-26 2007-04-24 Graphics system with configurable caches

Publications (1)

Publication Number Publication Date
BRPI0712834A2 true BRPI0712834A2 (pt) 2012-07-24

Family

ID=38457539

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0712834-7A BRPI0712834A2 (pt) 2006-04-26 2007-04-24 sistema grÁfico com caches configurÁveis

Country Status (9)

Country Link
US (1) US8766995B2 (pt)
EP (1) EP2011079B1 (pt)
JP (1) JP4938843B2 (pt)
KR (1) KR101018999B1 (pt)
CN (1) CN101427282B (pt)
BR (1) BRPI0712834A2 (pt)
CA (1) CA2649567C (pt)
RU (1) RU2412469C2 (pt)
WO (1) WO2007127745A1 (pt)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) * 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
KR20080014402A (ko) * 2006-08-11 2008-02-14 삼성전자주식회사 컴퓨터 그래픽스 데이터 처리방법과 데이터 처리장치
JP2008090673A (ja) * 2006-10-03 2008-04-17 Mitsubishi Electric Corp キャッシュメモリ制御装置
US20080133836A1 (en) * 2006-11-30 2008-06-05 Magid Robert M Apparatus, system, and method for a defined multilevel cache
JP4748609B2 (ja) * 2008-06-06 2011-08-17 株式会社アクセル 画像処理システム
US8688911B1 (en) * 2008-11-25 2014-04-01 Marvell Israel (M.I.S.L) Ltd. Transparent processing core and L2 cache connection
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US8766988B2 (en) * 2009-10-09 2014-07-01 Nvidia Corporation Providing pipeline state through constant buffers
US8890880B2 (en) 2009-12-16 2014-11-18 Intel Corporation Graphics pipeline scheduling architecture utilizing performance counters
US9058675B2 (en) * 2010-05-29 2015-06-16 Intel Corporation Non-volatile storage for graphics hardware
CN102455885A (zh) * 2010-10-19 2012-05-16 李笑非 有外部存取单元的网络显卡
WO2012109770A1 (en) * 2011-02-18 2012-08-23 Intel Corporation (A Corporation Of Delaware) Techniques to request stored data from a memory
US9734548B2 (en) * 2012-10-26 2017-08-15 Nvidia Corporation Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
CN107833268B (zh) * 2012-11-02 2021-05-14 想象技术有限公司 用于图形渲染的几何图形处理方法和图形渲染系统
CN103810742B (zh) * 2012-11-05 2018-09-14 正谓有限公司 图像渲染方法和系统
US8736629B1 (en) * 2012-11-21 2014-05-27 Ncomputing Inc. System and method for an efficient display data transfer algorithm over network
CN103247068B (zh) * 2013-04-03 2016-03-30 上海晨思电子科技有限公司 一种渲染方法和装置
KR102079657B1 (ko) * 2013-05-23 2020-02-20 에스케이플래닛 주식회사 캐시 데이터와 현재 데이터의 실시간 처리 현황 및 처리 순위를 보여주기 위한 장치 및 방법
US9507961B2 (en) * 2013-07-01 2016-11-29 Qualcomm Incorporated System and method for providing secure access control to a graphics processing unit
US9224187B2 (en) * 2013-09-27 2015-12-29 Apple Inc. Wavefront order to scan order synchronization
KR102147356B1 (ko) 2013-09-30 2020-08-24 삼성전자 주식회사 캐시 메모리 시스템 및 그 동작방법
KR102101834B1 (ko) 2013-10-08 2020-04-17 삼성전자 주식회사 영상 처리 장치 및 방법
RU2604985C2 (ru) * 2014-11-11 2016-12-20 Федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный технический университет" (ФГБОУ ВО "ВГТУ", ВГТУ) Способ организации вычислений на графических процессорах для моделирования помехоустойчивости низкоплотностных кодеков
KR102258100B1 (ko) * 2014-11-18 2021-05-28 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US10558460B2 (en) 2016-12-14 2020-02-11 Qualcomm Incorporated General purpose register allocation in streaming processor
US10726519B2 (en) * 2017-09-25 2020-07-28 Arm Limited Cache arrangement for graphics processing systems
US11789867B2 (en) 2020-01-14 2023-10-17 Arm Limited Cache arrangement for data processing systems
US11205243B2 (en) 2020-01-14 2021-12-21 Arm Limited Data processing systems
US11625332B2 (en) 2020-01-14 2023-04-11 Arm Limited Cache miss handling for read operations in data processing systems
US20230206559A1 (en) * 2021-12-27 2023-06-29 Advanced Micro Devices, Inc. Graphics discard engine

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1103384A (en) 1964-03-02 1968-02-14 Olivetti & Co Spa Improvements in or relating to electronic computers
US4079452A (en) 1976-06-15 1978-03-14 Bunker Ramo Corporation Programmable controller with modular firmware for communication control
NL7807314A (nl) 1978-07-06 1980-01-08 Philips Nv Inrichting voor het vergroten van de lengte van een logisch computeradres.
US5903454A (en) 1991-12-23 1999-05-11 Hoffberg; Linda Irene Human-factored interface corporating adaptive pattern recognition based controller apparatus
US7006881B1 (en) 1991-12-23 2006-02-28 Steven Hoffberg Media recording device with remote graphic user interface
US6850252B1 (en) 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
EP0627682B1 (en) 1993-06-04 1999-05-26 Sun Microsystems, Inc. Floating-point processor for a high performance three dimensional graphics accelerator
JPH0784851A (ja) 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法
JP3579461B2 (ja) 1993-10-15 2004-10-20 株式会社ルネサステクノロジ データ処理システム及びデータ処理装置
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
GB2285524B (en) 1994-01-11 1998-02-04 Advanced Risc Mach Ltd Data memory and processor bus
EP0676691A3 (en) 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US6279099B1 (en) 1994-04-29 2001-08-21 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5694143A (en) 1994-06-02 1997-12-02 Accelerix Limited Single chip frame buffer and graphics accelerator
US5598546A (en) 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5777629A (en) 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5798770A (en) 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5872729A (en) 1995-11-27 1999-02-16 Sun Microsystems, Inc. Accumulation buffer method and apparatus for graphical image processing
US5794016A (en) 1995-12-11 1998-08-11 Dynamic Pictures, Inc. Parallel-processor graphics architecture
US5793385A (en) 1996-06-12 1998-08-11 Chips And Technologies, Inc. Address translator for a shared memory computing system
EP1553564A3 (en) 1996-08-02 2005-10-19 Matsushita Electric Industrial Co., Ltd. Voice encoding device, voice decoding device, recording medium for recording program for realizing voice encoding /decoding and mobile communication device
US5949920A (en) 1996-08-13 1999-09-07 Hewlett-Packard Co. Reconfigurable convolver circuit
JP2970553B2 (ja) 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
TW360823B (en) 1996-09-30 1999-06-11 Hitachi Ltd Data processor and graphic processor
US6614847B1 (en) 1996-10-25 2003-09-02 Texas Instruments Incorporated Content-based video compression
US5870579A (en) 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5913925A (en) 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5831640A (en) 1996-12-20 1998-11-03 Cirrus Logic, Inc. Enhanced texture map data fetching circuit and method
US5991865A (en) 1996-12-31 1999-11-23 Compaq Computer Corporation MPEG motion compensation using operand routing and performing add and divide in a single instruction
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US6549209B1 (en) 1997-05-22 2003-04-15 Kabushiki Kaisha Sega Enterprises Image processing device and image processing method
US5958041A (en) 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US6195734B1 (en) 1997-07-02 2001-02-27 Micron Technology, Inc. System for implementing a graphic address remapping table as a virtual register file in system memory
EP0917056B1 (en) 1997-11-04 2008-01-09 Compaq Computer Corporation A multi-processor computer system and a method of operating thereof
US6654428B1 (en) 1998-01-13 2003-11-25 Massachusetts Institute Of Technology Systems and methods for wireless communications
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6188411B1 (en) 1998-07-02 2001-02-13 Neomagic Corp. Closed-loop reading of index registers using wide read and narrow write for multi-threaded system
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
JP3869947B2 (ja) 1998-08-04 2007-01-17 株式会社日立製作所 並列処理プロセッサ、および、並列処理方法
JP3279260B2 (ja) 1998-08-07 2002-04-30 日本電気株式会社 3次元グラフィックス描画装置
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6693719B1 (en) * 1998-09-16 2004-02-17 Texas Instruments Incorporated Path to trapezoid decomposition of polygons for printing files in a page description language
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
GB2343601B (en) 1998-11-06 2002-11-27 Videologic Ltd Shading and texturing 3-dimensional computer generated images
US7088865B2 (en) 1998-11-20 2006-08-08 Nikon Corporation Image processing apparatus having image selection function, and recording medium having image selection function program
US6219769B1 (en) 1998-12-09 2001-04-17 Advanced Micro Devices, Inc. Method and system for origin-sensitive memory control and access in data processing systems
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US6480941B1 (en) 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
WO2000056058A1 (en) 1999-03-18 2000-09-21 British Broadcasting Corporation Watermarking
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6964009B2 (en) 1999-10-21 2005-11-08 Automated Media Processing Solutions, Inc. Automated media delivery system
US6792575B1 (en) 1999-10-21 2004-09-14 Equilibrium Technologies Automated processing and delivery of media to web servers
US6577762B1 (en) 1999-10-26 2003-06-10 Xerox Corporation Background surface thresholding
US6574725B1 (en) 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6417851B1 (en) 1999-12-06 2002-07-09 Nvidia Corporation Method and apparatus for lighting module in a graphics processor
JP3485052B2 (ja) 1999-12-16 2004-01-13 日本電気株式会社 参照画像作成方法、パターン検査装置及び参照画像作成プログラムを記録した記録媒体
US6516443B1 (en) 2000-02-08 2003-02-04 Cirrus Logic, Incorporated Error detection convolution code and post processor for correcting dominant error events of a trellis sequence detector in a sampled amplitude read channel for disk storage systems
JP2001222712A (ja) 2000-02-08 2001-08-17 Sega Corp 画像処理装置、畳み込み積分回路及びその方法
US6807620B1 (en) 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6738510B2 (en) 2000-02-22 2004-05-18 Olympus Optical Co., Ltd. Image processing apparatus
US6940545B1 (en) 2000-02-28 2005-09-06 Eastman Kodak Company Face detecting camera and method
US6988008B2 (en) 2000-03-10 2006-01-17 Adept Technology, Inc. Smart camera
US6891533B1 (en) 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
US6952440B1 (en) 2000-04-18 2005-10-04 Sirf Technology, Inc. Signal detector employing a Doppler phase correction system
WO2002015000A2 (en) 2000-08-16 2002-02-21 Sun Microsystems, Inc. General purpose processor with graphics/media support
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
JP3580789B2 (ja) 2000-10-10 2004-10-27 株式会社ソニー・コンピュータエンタテインメント データ通信システム及び方法、コンピュータプログラム、記録媒体
GB2369016B (en) 2000-11-09 2004-06-09 Sony Uk Ltd Receiver
US6907520B2 (en) 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6515443B2 (en) 2001-05-21 2003-02-04 Agere Systems Inc. Programmable pulse width modulated waveform generator for a spindle motor controller
US20040172631A1 (en) 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US6744433B1 (en) 2001-08-31 2004-06-01 Nvidia Corporation System and method for using and collecting information from a plurality of depth layers
US8342935B1 (en) 2001-09-28 2013-01-01 Bally Gaming, Inc. Integrated display and input system
US6999076B2 (en) 2001-10-29 2006-02-14 Ati Technologies, Inc. System, method, and apparatus for early culling
US20030167379A1 (en) * 2002-03-01 2003-09-04 Soltis Donald Charles Apparatus and methods for interfacing with cache memory
US6871264B2 (en) * 2002-03-06 2005-03-22 Hewlett-Packard Development Company, L.P. System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits
KR100959470B1 (ko) 2002-03-22 2010-05-25 마이클 에프. 디어링 확장가능한 고성능 3d 그래픽
US6825843B2 (en) 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US6931489B2 (en) * 2002-08-12 2005-08-16 Hewlett-Packard Development Company, L.P. Apparatus and methods for sharing cache among processors
US7633506B1 (en) 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7268785B1 (en) 2002-12-19 2007-09-11 Nvidia Corporation System and method for interfacing graphics program modules
US7268779B2 (en) 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
US7146486B1 (en) 2003-01-29 2006-12-05 S3 Graphics Co., Ltd. SIMD processor with scalar arithmetic logic units
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7145565B2 (en) 2003-02-27 2006-12-05 Nvidia Corporation Depth bounds testing
US7612803B2 (en) 2003-06-10 2009-11-03 Zoran Corporation Digital camera with reduced image buffer memory and minimal processing for recycling through a service center
US7372484B2 (en) 2003-06-26 2008-05-13 Micron Technology, Inc. Method and apparatus for reducing effects of dark current and defective pixels in an imaging device
US7015913B1 (en) 2003-06-27 2006-03-21 Nvidia Corporation Method and apparatus for multithreaded processing of data in a programmable graphics processor
US7088371B2 (en) 2003-06-27 2006-08-08 Intel Corporation Memory command handler for use in an image signal processor having a data driven architecture
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US7702817B2 (en) 2003-10-28 2010-04-20 Microsoft Corporation Wireless network access technologies for retrieving a virtual resource via a plurality of wireless network interfaces
GB2409061B (en) 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7027062B2 (en) 2004-02-27 2006-04-11 Nvidia Corporation Register based queuing for texture requests
US20050195198A1 (en) 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7030878B2 (en) 2004-03-19 2006-04-18 Via Technologies, Inc. Method and apparatus for generating a shadow effect using shadow volumes
US7196708B2 (en) 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7339592B2 (en) 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
US7355603B2 (en) 2004-08-04 2008-04-08 Nvidia Corporation Filtering unit for floating-point texture data
US7538765B2 (en) 2004-08-10 2009-05-26 Ati International Srl Method and apparatus for generating hierarchical depth culling characteristics
US6972769B1 (en) 2004-09-02 2005-12-06 Nvidia Corporation Vertex texture cache returning hits out of order
US7388588B2 (en) 2004-09-09 2008-06-17 International Business Machines Corporation Programmable graphics processing engine
JP2006099422A (ja) 2004-09-29 2006-04-13 Konica Minolta Medical & Graphic Inc 画像処理装置、およびプログラム
US7576737B2 (en) 2004-09-24 2009-08-18 Konica Minolta Medical & Graphic, Inc. Image processing device and program
US7684079B2 (en) 2004-12-02 2010-03-23 Canon Kabushiki Kaisha Image forming apparatus and its control method
US20060136919A1 (en) 2004-12-17 2006-06-22 Sun Microsystems, Inc. System and method for controlling thread suspension in a multithreaded processor
US7358502B1 (en) 2005-05-06 2008-04-15 David Appleby Devices, systems, and methods for imaging
US20070030280A1 (en) 2005-08-08 2007-02-08 Via Technologies, Inc. Global spreader and method for a parallel graphics processor
US7557832B2 (en) 2005-08-12 2009-07-07 Volker Lindenstruth Method and apparatus for electronically stabilizing digital images
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US7447873B1 (en) 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
JP4920966B2 (ja) 2005-12-21 2012-04-18 キヤノン株式会社 画像形成装置
TWI361379B (en) 2006-02-06 2012-04-01 Via Tech Inc Dual mode floating point multiply accumulate unit
US8860721B2 (en) 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US8933933B2 (en) 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US20070268289A1 (en) 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
JP4675854B2 (ja) 2006-07-25 2011-04-27 株式会社東芝 パターン評価方法と評価装置及びパターン評価プログラム
US8345053B2 (en) 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
JP2008219523A (ja) 2007-03-05 2008-09-18 Canon Inc 撮像装置及びその制御方法
US7683962B2 (en) 2007-03-09 2010-03-23 Eastman Kodak Company Camera using multiple lenses and image sensors in a rangefinder configuration to provide a range map
US8154818B2 (en) 2007-12-14 2012-04-10 Lsi Corporation Systems and methods for adaptive CBD estimation in a storage device
JP5216100B2 (ja) 2007-12-14 2013-06-19 エルエスアイ コーポレーション サーボアドレスマークデータを用いたフライングハイト制御のためのシステム及び方法

Also Published As

Publication number Publication date
RU2412469C2 (ru) 2011-02-20
JP2009535710A (ja) 2009-10-01
EP2011079B1 (en) 2019-02-13
EP2011079A1 (en) 2009-01-07
CA2649567A1 (en) 2007-11-08
WO2007127745A1 (en) 2007-11-08
CN101427282A (zh) 2009-05-06
KR101018999B1 (ko) 2011-03-04
US8766995B2 (en) 2014-07-01
JP4938843B2 (ja) 2012-05-23
US20070252843A1 (en) 2007-11-01
RU2008146519A (ru) 2010-06-10
KR20090026124A (ko) 2009-03-11
CN101427282B (zh) 2013-02-13
CA2649567C (en) 2012-01-17

Similar Documents

Publication Publication Date Title
BRPI0712834A2 (pt) sistema grÁfico com caches configurÁveis
US10043235B2 (en) Method for caching GPU data and data processing system therefor
US7805589B2 (en) Relative address generation
US11107176B2 (en) Scheduling cache traffic in a tile-based architecture
JP5296169B2 (ja) タイル化されたプリフェッチ及びキャッシングされたデプスバッファ
US9214007B2 (en) Graphics processor having unified cache system
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US9092906B2 (en) Graphic processor and method of early testing visibility of pixels
EP1745434B1 (en) A kill bit graphics processing system and method
CN105556487B (zh) 对页驻留的条件性页错误控制
US20150269090A1 (en) Performance and power improvement on dma writes to level two combined cache/sram that is cached in level one data cache and line is valid and dirty
US20050219253A1 (en) Render-cache controller for multithreading, multi-core graphics processor
CN105630441A (zh) 一种基于统一染色技术的gpu体系架构
US6795078B2 (en) Parallel read with source-clear operation
US9569348B1 (en) Method for automatic page table compression
KR101097085B1 (ko) 멀티-텍스쳐링을 위한 동적 구성 가능 텍스쳐 캐시
US20120147028A1 (en) Partially Resident Textures
US6587113B1 (en) Texture caching with change of update rules at line end
WO2012109619A1 (en) Data storage address assignment for graphics processing
KR20200139082A (ko) 그래픽 처리 시스템을 위한 캐시 구성
CA2238586A1 (en) Non-blocking pipelined cache
US20150029203A1 (en) Filtering Mechanism for Render Target Line Modification
Park et al. A mid-texturing pixel rasterization pipeline architecture for 3D rendering processors
Park et al. A pixel pipeline architecture with selective z-test scheme for 3D graphics processors

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal: appeal against refusal