BR112015013487B1 - Sistema e método para alocar memória para dispositivos de memória diferentes utilizando qualidade de serviço - Google Patents
Sistema e método para alocar memória para dispositivos de memória diferentes utilizando qualidade de serviço Download PDFInfo
- Publication number
- BR112015013487B1 BR112015013487B1 BR112015013487-4A BR112015013487A BR112015013487B1 BR 112015013487 B1 BR112015013487 B1 BR 112015013487B1 BR 112015013487 A BR112015013487 A BR 112015013487A BR 112015013487 B1 BR112015013487 B1 BR 112015013487B1
- Authority
- BR
- Brazil
- Prior art keywords
- memory
- qos
- zone
- bandwidth
- data bandwidth
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
Abstract
SISTEMA E MÉTODO PARA ALOCAR MEMÓRIA PARA DISPOSITIVOS DE MEMÓRIA DIFERENTES UTILIZANDO QUALIDADE DE SERVIÇO. São apresentados sistemas e métodos para alocar memória para aparelhos de memória dessemelhantes. Uma modalidade exemplar inclui um método para alocar memória para aparelhos de memória dessemelhantes. É determinada uma razão de largura de banda de intercalação, que compreende uma razão de larguras de banda para duas ou mais aparelhos de memória dessemelhantes. Os aparelhos de memória dessemelhantes são intercalados de acordo com a razão de largura de banda de intercalação de modo a se definirem dois ou mais zonas de memória com níveis de desempenho diferentes. Solicitações de endereço de memória são alocados para as zonas de memória com base em uma qualidade de serviço (QoS).
Description
[0001] Este pedido é um pedido de patente continuação em parte do pedido de patente norte-americano copendente N°. de Série 13/726 537, depositado a 24 de dezembro de 2012 intitulado “Sistema e Método para Gerenciar Desempenho de Dispositivo de Computação com Tipos de Memória Diferentes” (Protocolo N°. 123065U1), que reivindica prioridade, de acordo com o 35 U.S.C. 119 (e) para o pedido de patente provisório norte-americano depositado a 10 de dezembro de 2012, pedido provisório cedido N°. de Série 61/735 352 (Protocolo N°. 123065P1), e intitulado “Sistema e Método para Gerenciar Desempenho de Dispositivo de Computação com Tipos de Memória Diferentes”, cada um dos quais é por este incorporado em sua totalidade à guisa de referência.
[0002] Os requisitos de desempenho e energia de sistema estão se tornando cada vez mais exigentes em sistemas e dispositivos de computador, particularmente em dispositivos de computação portáteis (PCDs) tais como telefones celulares, assistentes digitais portáteis (PDAs), consoles para jogos portáteis, computadores palmtop, computadores tablet e outros dispositivos eletrônicos portáteis. Tais dispositivos podem compreender dois ou mais tipos de unidade de processamento otimizados para uma finalidade específica. Por exemplo, uma ou mais unidades centrais de processamento (CPUs) podem ser utilizadas para desempenho ao nível do sistema geral ou outras finalidades. Enquanto uma unidade de processamento de gráficos (GPU) pode ser especificamente projetada para manipular gráficos de computador para saída para um dispositivo de exibição. Uma vez que cada processador exige mais desempenho, há necessidade de dispositivos de memória mais rápidos e mais especializados projetados para permitir a ou as finalidades específicas de cada processador. Arquiteturas de memória são tipicamente otimizadas para uma aplicação específica. As CPUs podem exigir memória de alta densidade com um desempenho ao nível do sistema aceitável, enquanto às GPUs podem exigir memória de densidade relativamente mais baixa com um desempenho substancialmente mais elevado que o das CPUs.
[0003] Consequentemente um único dispositivo de computador, tal como um PCD, pode incluir dois ou mais dispositivos de memória diferentes com cada dispositivo de memória especializado otimizado para sua finalidade especial e emparelhado e dedicado a uma unidade de processamento específica. Nesta arquitetura convencional (referida como arquitetura ”separada”), cada unidade de processamento dedicada é fisicamente acoplada a um tipo diferente de dispositivo de memória por mio de uma série de camadas físicas/de controle, cada uma delas com um canal de memória correspondente. Cada unidade de processamento dedicada acessa fisicamente o dispositivo de memória correspondente a uma tela de exibição de dados diferente otimizada para sua finalidade pretendida. Em uma configuração exemplar, por exemplo, uma CPU de propósito geral pode acessar fisicamente um primeiro tipo de dispositivo de memória de acesso aleatório dinâmica (DRAM) a uma largura de banda de dados otimizada (17 Gb/s, por exemplo). Uma GPU dedicada, de desempenho mais elevado, pode acessar fisicamente um segundo tipo de dispositivo DRAM a uma largura de banda de dados mais elevada (34 Gb/s, por exemplo). Embora a arquitetura separada otimize individualmente o desempenho da CPU e da GPU, há várias desvantagens significativas.
[0004] Para se obter o desempenho mais elevado, a memória dedicada da GPU deve ser dimensionada e configurada para processar todos os casos de uso, resoluções de exibição e parâmetros de sistema potenciais. Além disto, o desempenho mais elevado é “localizado” porque só a GPU é capaz de acessar fisicamente a memória dedicada da GPU à largura de banda de dados mais elevada. Embora a CPU possa acessar a memória dedicada da GPU e a GPU possa acessar a memória dedicada da CPU, a arquitetura separada proporciona este acesso por meio de um barramento de interconexão físico (uma Interconexão de Componentes Periféricos Expressa (PCIE), por exemplo) entre a GPU e a CPU a uma largura de banda de dados reduzida que é tipicamente menor que a largura de banda otimizada para ambos os tipos de dispositivos de memória. Mesmo se o barramento de interconexão físico e GPU e a CPU não funcionasse como um “gargalo” de desempenho, a arquitetura separada não permite que tanto a GPU ou quanto a CPU tirem vantagem da largura de banda disponível total combinada dos dois tipos diferentes de dispositivo memória. Os espaços de memória dos respectivos dispositivos de memória são colocados em blocos contíguos separados de endereços de memória. Em outras palavras, o mapa de memória inteiro coloca o primeiro tipo de dispositivo de memória em um bloco contíguo e coloca separadamente o segundo tipo de dispositivo de memória em um bloco contíguo diferente. Não há coordenação de hardware entre as portas de memória dos dispositivos de memória diferentes para suportar acesso físico que resida dentro do mesmo bloco contíguo.
[0005] Por conseguinte, embora haja uma procura crescente por dispositivos de memória mais especializados em sistemas de computador para prover desempenho de sistema e de energia cada vez maior em dispositivos de computador, permanece a necessidade na técnica de sistemas e métodos aperfeiçoados para gerenciar dispositivos de memória diferentes.
[0006] São apresentados sistemas e métodos para alocar memória para dispositivos de memória diferentes. Uma modalidade exemplar compreende um método para alocar memória para dispositivos de memória diferentes. É determinada uma razão de largura de banda de intercalação, que compreende uma razão de largura de banda para dois ou mais dispositivos de memória diferentes. Os dispositivos de memória diferentes são intercalados de acordo com a razão de largura de banda de intercalação de modo a se definirem duas ou mais zonas de memória que têm níveis de desempenho diferentes. Solicitações de endereços de memória são alocadas para as zonas de memória com base em uma qualidade de serviço (QoS).
[0007] Nas figuras os mesmos números de referência referem-se à mesmas peças em todas as diversas vistas, a menos que indicado de outro modo. Para números de referência com designações de tipo de letra tais como “102A” ou “102B”, as designações de tipo de letra podem diferenciar duas peças ou elementos iguais presentes na mesma figura. As designações de tipo de letra números de referência podem ser omitidas quando se pretende que o número de referência abranja todas as peças que têm o mesmo número de referência em todas as figuras.
[0008] A Figura 1 e um diagrama de blocos de uma modalidade de sistema para gerenciar dispositivos de memória diferentes.
[0009] A Figura 2 é um fluxograma de uma modalidade de um método executado pelo módulo de otimização de canal de memória na Figura 1 para gerenciar dispositivos de memória diferentes.
[0010] A Figura 3 é uma tabela exemplar que mostra uma razão de largura de banda de intercalação para diversos tipos de dispositivos de memória diferentes.
[0011] A Figura 4 é um diagrama de blocos que mostra os componentes do módulo de otimização de canal de memória da Figura 1.
[0012] A Figura 5 é uma tabela exemplar que mostra um remapeamento de endereços de canal de memória baseado em diversas razões de larguras de banda de intercalação.
[0013] A Figura 6 é um diagrama de fluxos/blocos combinados que mostra o funcionamento geral, arquitetura e funcionalidade de uma modalidade do módulo de remapeamento de canais da Figura 4.
[0014] A Figura 7 é um diagrama que mostra uma modalidade de um método de intercalação para criar várias zonas lógicas através de dispositivos de memória diferentes.
[0015] A Figura 8 é um diagrama de blocos que mostra uma implementação exemplar do módulo de otimização de canais de memória em um dispositivo de computação portátil.
[0016] A Figura 9 é um diagrama de blocos que mostra outra modalidade de um sistema que compreende o modalidade de otimização de canais de memória acoplado a um sistema operacional de alto nível (HLOS) para alocar memória para dispositivos de memória diferentes.
[0017] A Figura 10 é um diagrama de blocos que mostra uma modalidade da arquitetura e do funcionamento do sistema da Figura 9 para alocar memória para zonas em um espaço de memória unificado por meio da QoS provida pelo HLOS.
[0018] A Figura 11 é um diagrama de blocos que mostra outra modalidades para alocar memória para zonas em um espaço de memória unificado por meio de um módulo de monitoramento de QoS integrado com um modalidade de otimização de canais de memória.
[0019] A Figura 12 é um fluxograma que mostra uma modalidade de um método para alocar dinamicamente memória para dispositivos de memória diferentes com base em um serviço de QoS.
[0020] A Figura 13 mostra o diagrama da Figura 7 para alocar memória para as zonas lógicas por meio de uma função de alocação de memória associada ao API HLOS.
[0021] A palavra “exemplar” é aqui utilizada como significando “que serve como exemplo, ocorrência ou ilustração”. Qualquer aspecto aqui descrito como “exemplar” não deve ser necessariamente interpretado como preferido ou vantajoso comparado com outros aspectos.
[0022] Nesta descrição, o termo “aplicativo” pode incluir também arquivos que têm conteúdo executável, tais como: código de objeto, scripts, código de byte, arquivos de linguagem de marcação e consertos. Além disto, um “aplicativo” aqui referido pode incluir arquivos que não são executáveis por natureza, tais como documentos que podem precisar ser abertos ou arquivos de dados que precisam ser acessados.
[0023] O termo “conteúdo” pode incluir também arquivos que têm conteúdo executável, tais como: código de objeto, scripts, código de byte, arquivos de linguagem de marcação e consertos. Além disto, um “conteúdo” aqui referido pode incluir arquivos que não são executáveis por natureza, tais como documentos que podem precisar ser abertos ou arquivos de dados que precisam ser acessados.
[0024] Conforme utilizados nesta descrição, os termos “componente”, “banco de dados”, “módulo”, “sistema” e semelhantes pretendem referir-se a uma entidade relacionada com computador, seja hardware, firmware, uma combinação de hardware e software, software ou software em execução. Por exemplo, um componente pode ser, mas não está limitado a ser um processo que roda em um processador, um processador, um objeto, um executável, um fluxo de execução, um programa e/ou um computador. A título de ilustração, tanto um aplicativo que roda em um dispositivo de computação quanto o dispositivo de computação podem ser um componente. Um ou mais componentes podem residir dentro de um processador e/ou fluxo de execução, e um componente pode ser localizado em um computador e/ou distribuído entre dois ou mais computadores, Além disto, estes componentes podem ser executado de diversos meios passíveis de leitura por computador que têm diversas estruturas de dados armazenadas neles. O componentes podem comunicar-s e por meio de processos locais e/ou remotos, como, por exemplo, de acordo com um sinal que tem um ou mais pacotes de dados (como, por exemplo, dados de um componente que interage como outro componente em um sistema local, sistema distribuído e/ou através de uma rede como a Internet com outros sistemas por meio do sinal).
[0025] Nest a descrição os termos “dispositivo de comunicação”, “dispositivo sem fio”, “telefone sem fio”, “dispositivo de comunicação sem fio” e “dispositivo telefônico sem fio”, são utilizados de maneira intercambiável. Com o advento da tecnologia sem fio de terceira geração (“3G”) e quarta geração (“4G”), uma maior disponibilidade de largura de banda permitiu mais dispositivos de computação portáteis com uma variedade maior de capacidades sem fio. Portanto, um dispositivo de computador portátil pode incluir um telefone celular, um pager, um PDA, um telefone inteligente, um dispositivo de navegação ou um computador de mão com uma conexão ou link sem fio.
[0026] A Figura 1 mostra um sistema 10 que compreende uma arquitetura de gerenciamento de memória que pode ser implementada em qualquer dispositivo de computação adequado com duas ou mais unidades de processamento dedicadas para acessar dois ou mais dispositivos de memória de tipos diferentes, ou tipos semelhantes de dispositivo de memória com largura de banda de dados diferentes (referidos como “dispositivos de memória diferentes”). O dispositivo de computação pode compreende um computador pessoal, uma estação de trabalho, um servidor, um dispositivo de computação portátil (PCD), tal como um telefone um telefone celular, um assistente digital portátil (PDA), um console para jogos portátil, um computador palmtop ou um computador tablet, e qualquer outro dispositivo de computação com dois ou mais dispositivos de memória diferentes. Conforme descrito em seguida mais detalhadamente, a arquitetura de gerenciamento de memória é configura para prover seletivamente dois modos de funcionamento: um modo unificado e um modo separado. No modo separado, a arquitetura de gerenciamento de memória funciona como uma “arquitetura separada” da maneira convencional descrita acima, na qual cada unidade de processamento dedicada acessa um dispositivo de memória correspondente otimizado para sua finalidade pretendida. Por exemplo, uma unidade central de processamento “CPU” de propósito geral dedicada pode acessar um primeiro tipo de dispositivo de memória a uma largura de banda de dados otimizada, e uma unidade de processamento de gráficos (GPU) dedicada, de desempenho mais elevado, pode acessar um segundo tipo de dispositivo de memória a uma largura de banda de dados mais elevada. No modo unificado, a arquitetura de gerenciamento de memória é configurada para unificar os dispositivos de memória diferentes e permitir que as unidades de processamento dedicadas acessem seletivamente, ou individualmente ou em combinação a largura de banda combinada dos dispositivos de memória diferentes ou partes deles.
[0027] Conforme mostrado na modalidade da Figura 1, o sistema 100 compreende um modalidade de otimização de canais de memória 102 eletricamente conectado a dois tipos diferentes de dispositivos de memória de acesso aleatório dinâmica (DRAM) 104a e 104b e duas ou mais unidades de processamento dedicadas (uma CPU 108 e um GPU 106, por exemplo) que podem acessar os dispositivos de DRAM 104a e 104b. A GPU 106 é acoplada ao módulo de otimização de canais de memória 102 por meio de uma conexão elétrica 110. A CPU 108 é acoplada ao módulo de otimização de canais de memória 102 por meio de uma conexão elétrica 112. O módulo de otimização de canais de memória 102 compreende também uma série de conexões de hardware para acoplamento aos dispositivos de DRAM 104a e 104b. As conexões de hardware podem variar dependendo do tipo do dispositivo de memória. No exemplo da Figura 1, a DRAM 104a suporta quatro canais 114a, 114b, 114c e 114d que se conectam às conexões físicas/de controle 116a, 116b, 116c e 116d, respectivamente. A DRAM 104b suporta dois canais 118a e 118b que se conectam às conexões físicas/de controle 120a e 120b, respectivamente. Deve ficar entendido que o número e a configuração das conexões físicas/de controle podem variar dependendo do tipo do dispositivo de memória, inclusive o tamanho do endereços de memória (como, por exemplo, de 32 bits, de 64 bits, etc.).
[0028] A Figura 2 mostra um método 200 executado pelo módulo de otimização de canais de memória 102 para implementar um módulo unificado de funcionamento pela intercalação dos dispositivos de memória diferentes (os dispositivos de DRAM 104a e 104b, por exemplo). No bloco 202, o módulo de otimização de canais de memória 102 determina uma razão de largura de banda de intercalação que compreende uma razão das larguras de banda de dados para os dispositivos de DRAM 104a e 104b. As larguras de banda de dados podem ser determinadas quando da inicialização do dispositivo de computação.
[0029] Em uma modalidade, a razão de largura de banda de intercalação pode ser determinada acessando-se uma estrutura de dados, tal como a tabela 300 mostrada na Figura 1. A tabela 300 identifica razões de largura de banda de intercalação para diversas combinações de tipos de dispositivos de memória diferentes para implementar os dois dispositivos de DRAM 104a e 104b. As colunas 302 enumeram diversas configurações para o dispositivo de DRAM 104a. As fileiras 304 enumeram diversas configurações para o dispositivo de DRAM 104b. A este respeito, cada campo de dados numéricos identifica a razão de largura de banda de intercalação para a configuração de fileiras/colunas correspondente. Por exemplo, o primeiro campo de dados na parte superior da tabela 300 é realçado em preto e enumera uma razão de largura de banda de intercalação de 2,00, que corresponde a uma largura de banda de 2,8 GB/s para o dispositivo de DRAM 104a e uma largura de banda de dados de 6,4 GB/s para o dispositivo de DRAM 104b na Figura 3, os dispositivos de DRAM 104a e 104b são otimizados para utilização em um sistema de computação móvel. O dispositivo de DRAM 104b compreende um dispositivo de memória de dupla taxa de dados de baixa potência (LPDDR), que pode ser convencionalmente otimizado para utilização no modo separado para utilização dedicada pela CPU 108. O dispositivo de DRAM 104a compreende um dispositivo de memória I/O Larga (IO Larga), que pode ser convencionalmente otimizado para utilização no modo separado para utilização dedicada pela GPU 106. A este respeito, os valores numéricos identificam as razões de largura de banda de intercalação para os dispositivos de DRAM 104a e 104b de acordo com parâmetros de desempenho variáveis, tais como o tamanho de bits de endereço de memória (x64, x128, x256, x512), velocidade de relógio (MHz) e largura de banda de dados (GB/s). O módulo de otimização de canais de memória 102 pode efetuar uma busca para obter a razão de largura de banda de intercalação associada aos dispositivos de DRAM 104a e 104b. No bloco 202, na Figura 2, módulo de otimização de canais de memória 102 pode também determinar as larguras de banda de dados numéricos (de uma tabela 300 ou diretamente dos dispositivos de DRAM 104a e 104b, por exemplo) e em seguida utilizar estes dados para calcular a razão de largura de banda de intercalação.
[0030] Deve ficar entendido que os tipos de dispositivo de memória e parâmetros de desempenho podem variar dependendo do tipo específico de dispositivo de computação, aplicações de sistema, etc., nos quais o sistema 100 está sendo implementado. Os tipos e parâmetros de desempenho exemplares mostrados na Figura 3 são meramente utilizados nesta descrição para descrever um método de intercalação exemplar executado pelo módulo de otimização de canais de memória 102 em um sistema móvel. Alguns exemplos de outras tecnologias de memória de acesso aleatório adequados para o módulo de otimização de canais 102 incluem NOR FLASH, EEPROM, EPROM, DDR-NVM, PSCRAM, SRAM, POPROM e ROM. Os versados na técnica entenderão prontamente que podem ser executados diversos esquemas e métodos de intercalação alternativos.
[0031] Novamente com referência à Figura 2, no bloco 204, o módulo de otimização de canal de memória 102 intercala os dispositivos de DRAM 104a e 104b de acordo com a razão de largura de banda de intercalação determinada no bloco 202. O processo de intercalação iguala o tráfego a cada um dos canais de memória 114a, 114b, 114c, 114d e 118a e 118b para os dispositivos de DRAM 104a e 104b respectivamente à largura de banda disponível do visível específico. Por exemplo, se o dispositivo de DRAM 104a tiver uma largura de banda de dados de 34 GB/s e o dispositivo de DRAM 104b tiver uma largura de banda de dados de 17 GB/s, a razão de largura de banda de intercalação é 2.1. Isto significa que a taxa de dados do dispositivo de DRAM 104a é duas vezes mais rápida que a taxa de dados do dispositivo de DRAM 104b.
[0032] conforme mostrado na Figura 4, o módulo de otimização de canais de memória 102 pode compreender um ou mais módulos de remapeamento de canais 400 para configurar e manter uma tabela de mapeamento de endereços virtuais para os dispositivos de DRAM 104a e 104b de acordo com a razão de largura de banda de intercalação e distribuir tráfego para os dispositivos de DRAM 104a e 104b de acordo com a razão de largura de banda de intercalação. Uma tabela de mapeamento de endereços 500 exemplar é mostrada na Figura 5 a tabela de mapeamento de endereços 500 compreende uma lista de blocos de endereços 502 (que podem ser de qualquer tamanho) com atribuições de canais e/ou dispositivos de memória correspondentes baseadas na razão de largura de banda de intercalação. Na Figura 5, por exemplo, a coluna 504 mostra uma atribuição alternativa entre o dispositivo de DRAM 104a (“wideio2”) e o dispositivo de DRAM 104b (“lpddr3e”) baseada em uma razão de largura de banda de intercalação de 1:1. Blocos de endereços com números pares (N,N+2, N+4, N+6, etc.) são atribuídos a wideio2, e os blocos de endereços com números ímpares (N+1, N+3, N+5, etc.) são atribuídos a lpddr3e.
[0033] A coluna 506 mostra outra atribuição para uma razão de largura de banda de intercalação de 2:1. No caso de o dispositivo DRAM 104a (“wideio2”) ter uma taxa duas vezes mais rápida que a do dispositivo de DRAM (“lpddr3e”) dois blocos de endereço consecutivos são atribuídos a “wideio2” para cada bloco de endereços atribuídos a “lpddr3e”. Por exemplo, os blocos de endereços N e N+1 são atribuídos a wideio2. O bloco N+2 é atribuído a lpddr3e. Os blocos N+3 e N+4 são atribuídos a wideio2, e assim por diante. A coluna 508 mostra outra atribuição para uma razão de largura de banda de intercalação de 1:2 na qual o esquema de atribuição é invertido uma vez que o dispositivo de DRAM 104b (“lpddr3e”) é duas vezes mais rápido que o dispositivo de RAM 104a (“wideio2”).
[0034] Novamente com referência ao fluxograma da Figura 2, no bloco 206, a GPU 106 e a CPU 108 podem acessar a memória intercalada, de maneira convencional enviando solicitações de endereço de memória ao módulo de otimização de canais de memória 102. Conforme mostrado na Figura 6, o tráfego pode ser recebido pela lógica de remapeamento de canais 600 como um fluxo de entrada de solicitações 606, 608, 610, 612, 614, 616, etc.m, que correspondem aos blocos de endereços N, N+1, N+2, N+3, N+4, N+5, etc. (Figura 5). A lógica de remapeamento de canais 660 é configurada para distribuir (bloco 208 - Figura 2) o tráfego para os dispositivos de DRAM 104a e 104b de acordo com a razão de largura de banda de intercalação e o esquema de atribuição apropriado contido na tabela de mapeamento de endereços 500 (como, por exemplo, as colunas 504, 506, 508, etc.).
[0035] Seguindo-se o exemplo acima de uma razão de largura de banda de intercalação de 2:1, a lógica de remapeamento de canais direciona as solicitações 606, 608, 610, 612, 614 e 616 conforme mostrado na Figura 6. As solicitações 606, 608, 612 e 614 para os blocos de endereços N, N+1, N+3 e N+4, respectivamente, podem ser direcionadas para o dispositivo de DRAM 104a. As solicitações 610 e 616 para os blocos de endereços N+2 e N+5, respectivamente, podem ser direcionadas para o dispositivo de DRAM 104b. Desta maneira, o tráfego entrante da GPU 106 e da CPU 108 pode ser otimamente igualado à largura de banda disponível em qualquer um dos canais de memória 114 para o dispositivo de DRAM 104 e/ou dos canais de memória 118 para o dispositivo de DRAM 104b. Este modo unificado de funcionamento permite que a GPU 106 e a CPU acessem individual e/ou coletivamente a largura de banda combinada dos dispositivos de memória diferentes em vez de serem limitados ao funcionamento de alto desempenho “localizado” do modo separado de funcionamento convencional.
[0036] Conforme mencionado acima, o módulo de otimização de canais de memória 102 pode ser configurado para habilitar seletivamente ou o modo unificado ou modo separado com base em diversos cenários de utilização, podem ser de sistema desejáveis, etc. Além disto, Deve ficar entendido que partes dos dispositivos de memória diferentes podem ser intercaladas em vez de se intercalarem os dispositivos de memória inteiros. A Figura 7 mostra uma técnica de intercalação de várias camadas que pode ser implementada pelo módulo de otimização de canais de memória 102 para criar vários dispositivos ou zonas “lógicas”. Seguindo-se o exemplo acima, utilizando-se uma razão de largura de banda de intercalação de 2:1, o dispositivo de DRAM 104a pode compreender um par de dispositivos de memória de 0,5 GB 702 e 704, que têm uma largura de banda de alto desempenho de 34 GB/s convencionalmente otimizada para a GPU 106. O dispositivo de DRAM 104b pode compreender um dispositivo de memória de 1 GB 706 e um dispositivo de memória de 2 GB 708, cada um deles tendo uma largura de banda mais baixa de 17 GB/s convencionalmente otimizada para a CPU 108. A técnica de intercalação de várias camadas pode criar duas zonas intercaladas 710 e 712 e uma zona não intercalada 714. A zona 710 pode ser intercalada de maneira quadridirecional de modo a se obter 1,5 GB combinado a uma largura de banda combinada de 102 GB/s. A zona 702 pode ser intercalada de maneira bidirecional de modo a se obter 1,5 GB combinado a 34 GB/s. A zona 714 pode ser não intercalada de modo a obter 1 GB a 17 GB/s. A técnica de intercalação de várias camadas combinada com a arquitetura de gerenciamento de memória do sistema 100 pode facilitar a transição entre as partes intercaladas e não intercaladas, uma vez que os conteúdos das zonas intercaladas 710 e 712 podem ser explicitamente designados para estruturas e armazenadores de dados despejáveis ou migráveis, ao passo que os conteúdos da zona não intercalada 714 podem ser designados para processamento, tais como, operações de núcleo e/ou outros processos de baixa memória.
[0037] Conforme mencionado acima, o módulo de otimização de canais de memória 102 pode ser incorporado a qualquer sistema de computação desejável. A Figura 8 mostra o módulo de otimização de canais de memória 102 incorporado a um dispositivo de computação portátil (PCD800 exemplar). O módulo de otimização de memória 102 pode compreender um sistema em um chip (SoC) ou um sistema embutido que pode ser fabricado separadamente e incorporado a desenhos para o dispositivo de computação portátil 800.
[0038] Conforme mostrado, o PCD 800 inclui um sistema em chip 322 que inclui uma CPU de vários núcleos 402A. A CPU de vários núcleos 402A pode incluir um zero- ésimo 410, um primeiro núcleo 412 e um N-ésimo núcleo 414. Um dos núcleos pode compreender, por exemplo, a GPU 106 com um ou mais dos outros compreendendo a CPU 108. De acordo com modalidades exemplares alternativas, a CPU 402 pode compreender os tipos de tipos de núcleo único e não um que tenha vários núcleos, e neste caso a CPU 108 e a GPU 106 podem ser processadores dedicados, conforme mostrado no sistema 106.
[0039] Um controlador de exibição 328 e um controlador de tela sensível ao toque 330 podem ser acoplados à GPU 106. Por sua vez, o monitor com tela sensível ao toque 108 externo ao sistema em chip 322 pode ser acoplado ao controlador de exibição 328 e ao controlador de tela sensível ao toque 330.
[0040] A Figura 8 mostra também que um codificador de vídeo 334, como, por exemplo, um codificador de linha de alternação de fase (PAL), um codificador de memória colorido sequencial (SECAM) ou um codificador da comissão nacional de sistemas de televisão (NTSC), é acoplado à CPU de vários núcleos 402A. Além disto, um amplificador de vídeo 336 é acoplado ao codificador de vídeo 334 e ao monitor com tela sensível ao toque 108. Além disto, uma porta de vídeo 338 é acoplada ao amplificador de vídeo 336. Conforme mostrado na Figura 8, um controlador de barramento serial universal (USB) 340 é acoplado à CPU de vários núcleos 402A. al uma porta USB 342 é acoplada ao controlador de USB 340. A memória 304A e um cartão de módulo de identidade de assinante (SIM) 346 podem ser também acoplados à CPU de vários núcleos 402A. A memória 404A pode compreender dois ou mais dispositivos de memória diferentes (os dispositivos de DRAM 104a e 104b, por exemplo), conforme descrito acima. O módulo de otimização de canais de memória 102 pode ser acoplado à CPU 402a, (que inclui, por exemplo, uma CPU 108 e uma GPU 106), e a memória 404A pode compreender dois ou mais dispositivos de memória diferentes. O módulo de otimização de canais de memória 102 pode ser incorporado como um sistema separado em um chip (SoC) ou como um componente do SoC 322.
[0041] Além disso, conforme mostrado na Figura 8, uma câmara digital 348 pode ser acoplada à CPU de vários núcleos 402A. Sob um aspecto exemplar, a câmera digital 348 é uma câmera de dispositivo acoplado à carga “CCB” ou uma câmera de semicondutor de óxido de metal complementar (CMOS).
[0042] Conforme também mostrado na Figura 8, um codificador-decodificador (CODEC) de áudio estéreo 350 pode ser acoplado à CPU de vários núcleos 402A. Além do mais, um amplificador de áudio 352 pode ser acoplado ao CODEC de áudio estéreo 350. Sob um aspecto exemplar, um primeiro alto-falante estéreo 354 e um segundo alto-falante estéreo 356 são acoplados ao amplificador de áudio 352. A Figura 8 mostra que um amplificador de microfone pode ser também acoplado ao CODEC de áudio estéreo 350. Além disto, um microfone 360 pode ser acoplado ao amplificador de microfone 358. Sob um aspecto específico, um rádio- sintonizador de frequência modulada (FM) 362 pode ser acoplado ao CODEC de áudio estéreo 350. Além disto, uma antena FM 364 é acoplada ao rádio-sintonizador FM 362. Além disto, fones de ouvidos estereofônicos 366 podem ser acoplados ao CODEC de áudio estéreo 350.
[0043] A Figura 8 mostra também que um transceptor de radiofrequência 368 pode ser acoplado à CPU de vários núcleos 402A. Um comutador RF 370 pode ser acoplado ao transceptor RF e a uma antena RF 372. Conforme mostrado na Figura 8, um teclado 204 pode ser acoplado à CPU de vários núcleos 402A. Além disto, um dispositivo de ouvido mono com um microfone 376 pode ser acoplado à CPU de vários núcleos 402A. Além disto, um dispositivo vibrador 378 pode ser acoplado à CPU de vários núcleos 402A.
[0044] A Figura 8 mostra também que uma fonte de alimentação 380 pode ser acoplada ao sistema em chip 322. Sob um aspecto específico, a fonte de alimentação 380 é uma fonte de alimentação de corrente contínua (DC) que fornece energia aos diversos componentes do PCD 800 que necessitam de energia. Além disto, sob um aspecto específico, a fonte de alimentação é uma bateria DC recarregável ou uma fonte de alimentação DC que é derivada de um transformador de corrente alternada (AC) em DC que é conectado a uma fonte de alimentação AC.
[0045] A Figura 8 indica também que o PCD 800 pode incluir também um cartão de rede 388 que pode ser utilizado para acessar uma rede de dados, como, por exemplo, uma rede de área local, uma rede de área pessoa ou qualquer outra rede. O cartão de rede 388 pode ser um cartão de rede Bluetooth, um cartão de rede WiFi, um cartão de rede de área pessoal (PAN), um cartão de rede de tecnologia de ultra-baixa potência de rede de área pessoal (PeANUT) ou qualquer outro cartão de rede conhecido na técnica. Além disto, o cartão de rede 388 pode ser incorporado a um chip, isto é, o cartão de rede 388 pode ser uma solução completa em um chip e pode não ser um cartão de rede 388 separado.
[0046] Conforme mostrado na Figura 8, o monitor de tela sensível ao toque 108, a porta de vídeo 338, a porta USB 342, a câmera 348, o primeiro alto-falante estéreo, o segundo alto-falante estéreo 356, o microfone 360, a antena FM 364, os fones de ouvido estereofônicos 366, o comutador RF 370, a antena RF 372, o teclado 374, o dispositivo de ouvido mono 376, o vibrador 378 e a fonte de alimentação 380 podem ser externos ao sistema em chip 322.
[0047] As Figuras 9-13 mostram diversas modalidades alternativas de sistemas e métodos para alavancar aspectos da soluções de remapeamento e intercalação descritas acima em conexão com as Figuras 1-8 em um ambiente de sistema operacional de alto-nível (HLOS). Deve ficar entendido que o ambiente HLOS pode proporciona r uma plataforma de computação heterogênea ou uma arquitetura de sistema heterogênea (HSA), tais como as reveladas nos padrões HSA publicados pela Fundação HSA. O padrão atual, a Especificação de Tecnologia de Visualização I/O (IOMMU) AMD (Publicação N°. 4882, revisão 2.00, emitida a 24 de março de 2011) é por este, incorporado em sua totalidade à guisa de referência.
[0048] Conforme sabido na técnica, um sistema baseado em uma HSA pode seu configurado para proporcionar uma vista unificada da memória do sistema. A HSA permite que desenvolvedores programem a um nível de abstração mais elevado, por exemplo, utilizando linguagens de programação dominantes, abstraindo de especificações de hardware do desenvolvedor, e deixando a codificação específica de hardware para ser executada pelo vendedor de hardware. Entretanto, não há solução conhecida para a implementação eficaz de uma HSA em um sistema com tipos ou dispositivos de memória diferentes.
[0049] Deve ficar entendido que os sistemas e métodos descritos em seguida em conexão com as Figuras 9-13 apresentam geralmente uma solução única e desejável para suportar uma HSA e/ou um HLOS em um sistema que compreende tipos ou dispositivos de memória diferentes, tais como os descritos acima. Os sistemas e métodos descritos em seguida podem apresentar alto desempenho, potência mais baixa e custos mais baixos pela remoção da necessidade existente de que todos os elementos da plataforma sejam uniformes. Além disto, os desenvolvedores de hardware podem ter a flexibilidade para combinar, por exemplo, dispositivos e/ou tipos de memória tanto de alto quanto de baixo custo em um dispositivo de computação que adere ao padrão HSA.
[0050] A Figura 9 mostra um sistema 900 que compreende um HLOS 902 em comunicação com uma módulo de otimização de canais de memória 102 e um ou mais aplicativos 906 para alocar dinamicamente memória para dispositivos de memória diferentes. O módulo de otimização de canais de memória 102 pode ser geralmente configurado e funcionar da maneira descrita acima. O módulo de otimização de canais de memória 102 é eletricamente conectado a dois ou mais tipos ou dispositivos de memória diferentes (a DRAM 104a e 104b, por exemplo) e a qualquer número de unidades de processamento que pode acessar os dispositivos de memória diferentes. Deve ficar entendido que as unidades de processamento podem incluir unidades de processamento dedicadas (uma CPU 108 e uma GPU 106, por exemplo) ou outros processadores programáveis. A GPU 106 é acoplada ao módulo de otimização de canais de memória 102 por meio de uma conexão elétrica 110. A CPU 108 é acoplada ao módulo de otimização de canais de memória 102 por meio de uma conexão elétrica 112. Um ou mais processadores programáveis (não mostrados) podem ser acoplados ao módulo de otimização de canais de memória 102 por meio de conexões correspondentes. As unidades de processamento dedicadas, os processadores programáveis e quaisquer aplicativos 906 que acessem os dispositivos de memória diferentes podem ser geralmente referidos como “clientes” do HLOS 902 e/ou do módulo de otimização de canais de memória.
[0051] Os processadores programáveis podem compreender processadores de sinais digitais (DSPs) para aplicativos de propósito especial que incluem, por exemplo, aplicativos de vídeo, aplicativos de áudio ou quaisquer outros aplicativos 906. Conforme mencionado acima, as unidades de processamento dedicadas, os aplicativos 906, o HLOS 902 e/ou os processadores programáveis podem suportar plataformas de computação heterogêneas configuradas para suportar uma arquitetura de sistema heterogênea (HSA). Deve ficar entendido que a HSA cria um desenho de processador aperfeiçoado que expõe ao aplicativo 906 os benefícios e capacidades de elementos de computação programáveis dominantes. Com a HSA, os aplicativos 906 podem criar estruturas de dados em um espaço de endereços unificado único e podem iniciar itens de trabalho em paralelo no hardware mais apropriado para uma dada tarefa. O compartilhamento de dados entre elementos de computação é tão simples quanto enviar um indicador. Várias tarefas de computação podem funcionar nas mesmas regiões de memória coerentes, com a utilização de barreiras e operações de memória atômicas conforme necessário para manter a sincronização dos dados.
[0052] Conforme descrito acima mais detalhadamente, o módulo de otimização de canais de memória 102 compreende também uma série de conexões de hardware para acoplamento com a DRAM 104a e 104b. As conexões de hardware podem variar dependendo do tipo do dispositivo de memória. Em uma modalidade, os dispositivos de memória diferentes compreendem um dispositivo de memória de dupla taxa de dados (DDR) que provê canais correspondentes que se conectam a conexões físicas/de controle no módulo de otimização de canais de memória 102. Deve ficar entendido que o número e a configuração das conexões físicas/de controle podem variar dependendo do tipo de dispositivo de memória, inclusive o tamanho dos endereços de memória (como, por exemplo, 32 bits, 64 bits, etc.).
[0053] O HLOS 902 compreende um módulo ou módulos de monitor de qualidade de serviço (QoS) 904. Os módulos de monitor de QoS 904 prestam serviços de QoS para os aplicativos 906 garantindo e/ou atendendo aos requisitos de memória do aplicativo. Os serviços de QoS podem ser baseados em uma QoS declarada pelo programador fornecida ao HLOS 902 por meio de, por exemplo, de uma interface de programador de aplicativo (API) 1002 associado aos módulos de monitor de QoS 904. Em outras modalidades o HLOS 902 pode determinar a QoS estimada com base no monitoramento do comportamento e/ou desempenho de acesso à memória dos aplicativos 906 (como, por exemplo, processos, fluxos de execução, etc.). Outros valores de QoS exemplares podem ser a largura de banda de memória e/ou os requisitos de latência ou outras métricas de desempenho de memória, para os dados a serem alocados na memória da plataforma de modo que o aplicativo que efetua o acesso aos dados seja capaz de satisfazer o desempenho e a qualidade desejados.
[0054] Conforme mostrado na modalidade da Figura 10, o HLOS 902 suporta acesso de memória intercalada aos dispositivos de memória diferentes endereçados por um espaço de endereços unificado 1000. O espaço de endereços unificado 100 podem compreender uma ou mais zonas de mapa de memória inteiro lógicas (as zonas de memória 1004, 1006 e 1008, por exemplo). Deve ficar entendido que o espaço de endereços unificado 100 e as zonas de memória 1004, 1006 e 1008 podem ser configurados utilizando-se a técnica de intercalação de várias camadas descritas acima e mostrada na Figura 7 para criar vários dispositivos ou zonas de memória “lógicas”. Por exemplo, revendo-se o exemplo acima da Figura 7, pode ser utilizada uma razão de largura de banda de intercalação de 2:1. O dispositivo de DRAM 104a pode compreender um par de dispositivos de memória de 0,5 GB 702 e 703 que têm uma largura de banda de alto- desempenho de 34 GB/s convencionalmente otimizada para a GPU 106. O dispositivo de DRAM 104b podem compreender um dispositivo de memória de 1 GB 706 e um dispositivo de memória de 2 GB 708, cada um deles tendo uma largura de banda mais baixa de 17 GB/s convencionalmente otimizada para a CPU 108. A técnica de intercalação de várias camadas pode criar duas zonas intercaladas 710 e 712 e uma zona não intercalada 714. A zona 710 pode ser intercalada de maneira quadridirecional de modo a se obter 1,5 GB combinado a uma largura de banda combinada de 102 GB/s. A zona 712 pode ser intercalada de maneira bidirecional de modo a se obter 1,5 GB combinado a 34 GB/s. A zona 714 pode ser não intercalada de modo a se obter 1 GB a 17 GB/s. A técnica de intercalação de várias camadas combinada com a arquitetura de gerenciamento de memória do sistema 100 pode facilitar a transição entre partes intercaladas e não intercaladas uma vez que os conteúdos das zonas intercaladas 710 e 712 podem ser explicitamente designados para estrutura e armazenadores de dados despejáveis ou migráveis, ao passo que o conteúdo da zona não intercalada 714 pode ser designado para processamento, tal como operações de núcleo e/ou outros processos de baixa memória. Para as finalidades da Figura 10, as zonas de memória 1004, 1006 e 1008 podem corresponder à zonas 710, 712 e 714 da Figura 7. As zonas de memória 1004, 1006 e 1008 podem ter níveis de densidade e/ou desempenho diferentes.
[0055] O HLOS 902 integrado com o módulo de otimização de canais de memória 102 proporciona um esquema de alocação de memória eficaz. Deve ficar entendido que o HLOS 902 e o módulo de otimização de canais de memória 102 podem alocar memória para cargas operacionais de aplicável diferente com requisitos de desempenho de memória variáveis através do dispositivo. O HLOS 902 é configurado para gerenciar apropriadamente a alocação/desalocação dos componentes de memória de requisitos de desempenho variáveis para a utilização eficaz da plataforma de hardware.
[0056] O módulo de monitoramento de QoS 904 pode proporcionar memória alocada dinamicamente e virtual livre de uma ou mais das zonas de memória 1004, 1006 e 1008. Em uma modalidade, o módulo de monitoramento de QoS 904 pode atribuir zonas de desempenho mais elevado a tarefas/fluxos de execução associados aos aplicativos 906, que podem solicitar ou senão recebe desempenho mais elevado. O módulo de monitoramento de QoS 904 pode atribuir zonas de desempenho mais baixo a tarefas/fluxo de execução que não solicitam desempenho mais elevado. Além disto, o módulo de monitoramento de QoS 904 pode controlar dinamicamente a alocação de memória de modo a voltar, por exemplo, de um primeiro tipo de zona solicitado para uma segunda ou terceira escolha.
[0057] O módulo de monitoramento de QoS pode ser também configurado para auditar e migrar ou expulsar processos de zonas de desempenho mais elevado com base nas credenciais desse processo e quão desejável pode ser que esse processo exista nessa zona. Os processos podem ser auditados e migrados ou expulsos de zonas que podem ser apagadas, desligadas, etc., oferecendo-se assim redução na potência do sistema durante o modo de espera. o módulo de monitoramento de QoS 130 pode monitorar periodicamente os aplicativos 906 e, com base no desempenho monitorado, avaliar e recomendar modificações nas configurações de zoneamento.
[0058] O módulo de monitoramento de QoS pode ser configurado para prover solicitações ou sugestões de QoS quando aloca memória para um código de aplicativo. Deve ficar entendido que diversos parâmetros de QoS os conexos podem ser monitorados pelo módulo de monitoramento de QoS 904 e podem indicar, por exemplo, o nível de desempenho ou a natureza do acesso na região alocada, como, por exemplo, efetuando fluxo contínuo em acesso aleatório discreto, contíguo, grande, de alta capacidade de transmissão em pequenos pedaços, etc.).
[0059] O módulo de monitoramento de QoS 904 pode traduzir o(s) parâmetro(s) de QoS e mapeá-los em um tipo de memória ou zona de memória específica. Por exemplo, o acesso aleatório pode ser utilizar latência de acesso a memória mais baixa para implementação eficaz do código de aplicativo, ao passo que pode ser desejável efetuar fluxo contínuo em um código de aplicativo de alta capacidade de transmissão de modo a utilizar largura de banda de memória elevada. Os parâmetros de QoS podem incluir valores em tempo real diretos, tais como, por exemplo “latência de acesso à memória < x nsec”. Na modalidade da Figura 10, na qual o HLOS 902 inclui a API 1002, os parâmetros de QoS podem ser um argumento opcional para uma biblioteca de alocação de memória.
[0060] O módulo de monitoramento de QoS 904 pode ser configurado para aumentar um módulo de gerenciamento de memória no núcleo para rastrear as utilizações dinâmicas dos tipos diferentes de memória heterogênea. O módulo gerenciamento de memória aumentado pode determinar a alocação apropriada da memória solicitada para uma das zonas de memória 1004, 1006 e 1008 com base em sugestões de QoS.
[0061] Deve ficar entendido que não é necessário utilizar valores de QoS. Na ausência de qualquer valor de QoS, o módulo de monitoramento de QoS 904 pode determinar as zonas de memória apropriadas para alocação de memória solicitada de aplicativo com base no desempenho de tempo de execução inicial. As zonas de memória 1004, 1006 e 1008 podem ser deslocadas dinamicamente de uma zona para outra se, por exemplo, o desempenho de tempo de execução do aplicativo 906 sofrer impacto com base na alocação atual de zonas de memória. Na ausência de um parâmetro de QoS, o módulo de monitoramento de QoS 904 pode ficar de olho no desempenho de acesso à memória de um processo e/ou fluxo de execução, rastreando se os acessos são pedaços contíguos relativamente grandes ou acessados aleatoriamente. O intervalo de tempo entre cada rajada de acesso pode ser utilizado para estimar o parâmetros de QoS.
[0062] O módulo de monitoramento de QoS 904 pode ser também configurado para trocar a memória alocada por um processo ou fluxo de execução específico para a zona de memória relevante que corresponde otimamente à QoS estimada quando o processo/fluxo de execução específico está em estágio pendente/de espera. A troca da memória alocada para uma zona diferente pode ser evitada durante o estado de execução de modo a se compensar o overhead durante a execução ativa.
[0063] Em modalidades que implementam uma QoS estimada, o módulo de monitoramento de QoS 904 pode ser configurado para corresponder à zona de memória atualmente alocada. O módulo de monitoramento de QoS 904 pode monitorar o fluxo de execução/processo para alterações futuras no comportamento de acesso à memória. A frequência no processo de monitoramento pode variar conforme desejado. Alternativamente, o módulo de monitoramento de QoS pode eliminar monitoramento adicional com base na atividade total no sistema 900 de modo a reduzir o overhead do processo de monitoramento.
[0064] Deve ficar entendido que podem ser implementadas diversas estruturas de hardware que são configuras para extrair o comportamento/padrão de acesso à memória de um processo/fluxo de execução com a finalidade de determinar a QoS estimada de modo a mapear a alocação de memória para a zona de memória apropriada. Além disto, a alocação de zona de memória pode ser também granular quando a alocações diferentes dentro de um processo/fluxo de execução específico podem ser alocadas para zonas de memória diferentes onde a QoS satisfaça uma faixa mais ampla. Por exemplo, alguns componentes podem ser melhor adequados para dados de fluxo contínuo de largura de banda elevada que podem sobreviver a uma latência mais elevada pela capacidade de transmissão mais elevada necessária em comparação, por exemplo, com acesso aleatório rápido, mais memória de largura de banda baixa.
[0065] A Figura 11 mostra outra modalidade de um sistema 1011 para integrar um ou mais dos serviços de QoS descritos acima com o módulo de otimização de canais de memória 102. Esta abordagem pode ser desejável para acomodar aplicativos legados 906 que possam não ser compatíveis com uma solução de QoS apresentada pelo HLOS 902. Nesta modalidade, o módulo de otimização de canais de memória 102 compreende também o módulo ou módulos de monitoramento de QoS 904 que são opcionalmente acoplados ao módulo ou módulos de remapeamento de canais 400 descritos acima.
[0066] A Figura 12 mostra um método 1200 para alocar dinamicamente memória ou no sistema 900 (Figura 9) ou no sistema 1100 (Figura 11) de acordo com as abordagens de intercalação e remapeamento descritas acima. No bloco 1202, é determinada uma razão de largura de banda de intercalação. Conforme descrito acima, a razão de largura de banda de intercalação pode compreender uma razão de larguras de banda para dois ou mais tipos de dispositivo de memória diferentes. No bloco 1204, os tipos ou dispositivos de memória diferentes são intercalados de acordo com a razão de largura de banda de intercalação determinada no bloco 1202. Qualquer uma das abordagens acima descritas ou outras abordagens de intercalação pode ser implementada para definir duas ou mais zonas de memória (as zonas 1004, 1006 e 1008, por exemplo), com cada zona de memória tendo um nível de desempenho e/ou nível de densidade diferente. No bloco 1206, o HLOS 902 e/ou o módulo de otimização de canais de memória 102 podem receber solicitações de endereços de memória dos aplicativos 906 (ou outros clientes). Em resposta, a memória é alocada para zona de memória apropriada com base ou em uma QoS declarada (por meio da API 1002, por exemplo) ou em uma QoS estimada.
[0067] Na modalidade mostrada na Figura 13, a QoS declarada pode ser implementada por uma função “malloc” (isto é, alocação de memória) que compreende à API 1002. Seguindo-se o exemplo acima (Figura 7) utilizando-se uma razão de largura de banda de intercalação de 2:1, o dispositivo de DRAM 1004a pode compreender um par de dispositivos de memória de 0,5 GB 702 e 704, que têm uma largura de banda de alto desempenho de 34 GB/s convencionalmente otimizada para a GPU 106. O dispositivo de DRAM 104b pode compreender um dispositivo de memória de 1 GB 706 e um dispositivo de memória de 2 GB 708, cada um deles tendo uma largura de banda mais baixa de 17 GB/s convencionalmente otimizada para a CPU 108. A técnica de intercalação de várias camadas pode criar duas zonas intercaladas 710 e 712 e uma zona não intercalada 714. A zona 710 pode ser intercalada de maneira quadridirecional de modo a se obter 1,5 GB combinado a uma largura de banda combinada de 102 GB/s. A zona 712 pode ser intercalada de maneira bidirecional de modo a se obter 1,5 GB combinado a 34 GB/s. A zona 714 pode ser não intercalada de modo a se obter 1 GB a 17 GB/s. Deve ficar entendido que a QoS pode ser aplicada a todas as variantes diferentes de função de alocação de memória e que a “malloc” é utilizada meramente como um exemplo possível.
[0068] Um primeira função malloc 1302 pode ser utilizada para declarar uma primeira QoS associada, por exemplo, à zona de memória intercalada quadridirecional 710. Uma segunda função malloc 1304 pode ser utilizada para declarar uma segunda QoS, associada, por exemplo zona intercalada bidirecional 712. Uma terceira função malloc 1306 pode ser utilizada para declarar uma terceira QoS associada, por exemplo, à zona não intercalada 1306.
[0069] Deve ficar entendido que uma ou mais das etapas de método aqui descritas podem ser armazenada na memória como instrução de programa de computador, tais como os módulos descritos acima. Estas instruções podem ser executadas por qualquer processador adequado em combinação ou em conjunto com o módulo correspondente para executar os métodos aqui descrito.
[0070] Determinadas etapas nos processos ou fluxos de processador descritos neste relatório naturalmente precedem outras para que a invenção funcionem conforme descrito. Entretanto, a invenção não está limitada à ordem das etapas descritas se tal ordem o seqüência não alterar a funcionalidade da invenção. Ou seja, é reconhecido que algumas etapas podem ser executadas antes, depois, ou paralelamente (de maneira substancialmente simultânea com) outras etapas sem que se abandone o alcance e o espírito da invenção. Em alguns casos, determinadas etapas podem ser omitidas ou não executadas sem que se abandone a invenção. Além disto, palavras tais como “em seguida”, “então”, “seguinte”, etc., não se destinam a limitar a ordem das etapas. Estas palavras são simplesmente utilizadas para guiar o leitor através da descrição do método exemplar.
[0071] Além disso, os versados na técnica de programação são capazes de gravar código de computador ou identificar hardware e/ou circuitos apropriados para implementar a invenção revelada sem dificuldade com base nos fluxogramas e descrição conexa neste relatório, por exemplo.
[0072] Portanto, a revelação de um conjunto específico de instruções de código de programa ou dispositivos de hardware detalhados não é considerada necessária para um entendimento adequado de como fabricar e utilizar a invenção. A funcionalidade inventiva dos processos implementados por computador reivindicados é explicada mais detalhadamente na descrição acima e em conjunto com as figuras, que podem mostrar diversos fluxos de processo.
[0073] Sob um ou mais aspectos exemplares, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio passível de leitura por computador. Os meios passíveis de leitura por computador incluem tanto meios de armazenamento em computador quanto meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador de um lugar para outro. Um meio de armazenamento pode ser qualquer meio disponível que possa ser acessado por um computador. A título de exemplo, e não de limitação, tais meios passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM, ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos ou qualquer outro meio que possa ser utilizado para portar ou armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador.
[0074] Além disso, qualquer conexão é apropriadamente de meio passível de leitura por computador. Por exemplo, se o software for transmitido de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (“DSL”), ou tecnologias sem fio tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra ótica, o par trançado a ADSL ou tecnologias sem fio tais como infravermelho, rádio e microonda são incluídos na definição de meio.
[0075] Disco (DISK E DISC, no original) conforme aqui utilizado inclui disco compacto (“CD”), disco de laser, disco óptico, disco versátil digital (“DVD”), disco flexível e disco blu-ray, onde discos (DISKS) reproduzem dados magneticamente, enquanto discos (DISCS) reproduzem dados opticamente com lasers. Combinações desses elementos devem ser incluídas dentro do alcance dentro dos meios passíveis de leitura por computador.
[0076] Modalidades alternativas se tornarão evidentes aos versados na técnica à qual a invenção se refere sem que se abandonem seu espírito e alcance. Portanto, embora aspectos selecionados tenham sido mostrados e descritos em detalhe, deve ficar entendido que diversas substituições e alterações podem ser feitas neles sem que se abandone o espírito e alcance da presente invenção, conforme definidos pelas reivindicações seguintes.
Claims (20)
1. Método para alocar memória para dispositivos de memória diferentes de um dispositivo de computação, caracterizado pelo fato de que compreende: definir uma primeira zona de memória ao intercalar uma primeira porção de um primeiro dispositivo de memória associado a um primeiro processador, o primeiro dispositivo de memória tendo uma primeira largura de banda de dados, e uma primeira porção de um segundo dispositivo associado a um segundo processador, o segundo dispositivo de memória tendo uma segunda largura de banda de dados diferente da primeira largura de banda de dados, em que o primeiro dispositivo de memória é um tipo diferente de dispositivo do segundo dispositivo de memória e a primeira zona de memória tem uma primeira largura de banda de dados de zona maior do que a primeira ou a segunda largura de banda de dados; definir uma segunda zona de memória tendo uma segunda largura de banda de dados de zona diferente da primeira largura de banda de dados de zona, a segunda zona de memória compreendendo uma segunda porção de pelo menos um dentre o primeiro e segundo dispositivos de memória; e alocar solicitações de endereço de memória entre a primeira e segunda zonas de memória com base em uma qualidade de serviço, QoS.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente determinar uma razão de largura de banda de intercalação compreendendo uma razão da primeira largura de banda de dados do primeiro dispositivo de memória e da segunda largura de banda de dados do segundo dispositivo de memória.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que intercalar a primeira porção do primeiro dispositivo de memória e a primeira porção do segundo dispositivo de memória compreende adicionalmente intercalar o primeiro e segundo dispositivos de memória de acordo com a razão de largura de banda de intercalação.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o primeiro dispositivo de memória compreende um primeiro tipo de memória de acesso aleatório dinâmica, DRAM, e o segundo dispositivo de memória compreende um segundo tipo de DRAM diferente do primeiro tipo de DRAM.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a QoS compreende uma QoS declarada a partir de um aplicativo executando no dispositivo de computador.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que alocar as solicitações de endereço de memória entre a primeira e segunda zonas de memória com base na QoS compreende um sistema operacional de alto nível, HLOS, recebendo as solicitações de endereço de memória.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a QoS é declarada através de uma interface de programa de aplicativo, API, associada a um sistema operacional de alto nível, HLOS.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a QoS compreende uma QoS estimada com base em uma performance atual de uma ou mais dentre as zonas de memória.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que alocar as solicitações de endereço de memória entre a primeira e segunda zonas de memória com base na qualidade de serviço, QoS, compreende um módulo de otimização de canal de memória estimando a QoS.
10. Sistema para alocar memória para dispositivos de memória diferentes de um dispositivo de computador, caracterizado pelo fato de que compreende meios para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
11. Sistema de memória para gerenciar dispositivos de memória em um dispositivo de computador, caracterizado pelo fato de que compreende: um primeiro dispositivo de memória associado a um primeiro processador, o primeiro dispositivo de memória tendo uma primeira largura de banda de dados; um segundo dispositivo de memória associado a um segundo processador, o segundo dispositivo de memória tendo uma segunda largura de banda de dados diferente da primeira largura de banda de dados, em que o segundo dispositivo de memória é um tipo diferente de dispositivo do primeiro dispositivo de memória; um módulo de otimização de canal de memória em comunicação com o primeiro e segundo dispositivos de memória e operável para: definir uma primeira zona de memória ao intercalar a primeira porção do primeiro dispositivo de memória e uma primeira porção do segundo dispositivo de memória, a primeira zona de memória tendo uma primeira largura de banda de zona maior do que a primeira ou a segunda largura de banda de dados, e definir uma segunda zona de memória compreendendo uma segunda porção de pelo menos um dentre o primeiro e segundo dispositivos de memória, a segunda zona de memória tendo uma segunda largura de banda de dados de zona diferente da primeira largura de banda de dados de zona; e um sistema operacional de alto nível, HLOS, em comunicação com o módulo de otimização de canal de memória para alocar solicitações de endereço de memória de um ou mais aplicativos executando no dispositivo de computador para a primeira e segunda zonas de memória com base em uma qualidade de serviço, QoS.
12. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o módulo de otimização de canal de memória é operável em um modo discreto de operação para somente alocar solicitações de endereço de memória a uma porção não intercalada do primeiro e segundo dispositivos de memória.
13. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o módulo de otimização de canal de memória determina uma razão de largura de banda de intercalação compreendendo uma razão da primeira largura de banda de dados do primeiro dispositivo de memória e da segunda largura de banda de dados do segundo dispositivo de memória.
14. Sistema de memória, de acordo com a reivindicação 13, caracterizado pelo fato de que o módulo de otimização de canal de memória intercala a primeira porção do primeiro dispositivo de memória e a primeira porção do segundo dispositivo de memória de acordo com a razão de largura de banda de intercalação.
15. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o primeiro dispositivo de memória compreende um primeiro tipo de memória de acesso aleatório dinâmica, DRAM, e o segundo dispositivo de memória compreende um segundo tipo de memória DRAM diferente do primeiro tipo de DRAM.
16. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o HLOS recebe a QoS através de uma interface de programa de aplicativo, API, associada.
17. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o módulo de otimização de canal de memória é operável adicionalmente para estimar a QoS com base em um nível de performance atual para uma ou mais dentre as zonas de memória.
18. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que a QoS compreende uma dentre uma QoS declarada de um aplicativo ou uma QoS estimada.
19. Sistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que a QoS compreende uma QoS estimada com base em uma performance atual de uma ou mais dentre as zonas de memória.
20. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261735352P | 2012-12-10 | 2012-12-10 | |
US61/735,352 | 2012-12-10 | ||
US13/726,537 US8959298B2 (en) | 2012-12-10 | 2012-12-24 | System and method for managing performance of a computing device having dissimilar memory types |
US13/726,537 | 2012-12-24 | ||
US13/781,366 US9092327B2 (en) | 2012-12-10 | 2013-02-28 | System and method for allocating memory to dissimilar memory devices using quality of service |
US13/781,366 | 2013-02-28 | ||
PCT/US2013/068217 WO2014092883A1 (en) | 2012-12-10 | 2013-11-04 | System and method for allocating memory to dissimilar memory devices using quality of service |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112015013487A2 BR112015013487A2 (pt) | 2017-07-11 |
BR112015013487B1 true BR112015013487B1 (pt) | 2023-01-31 |
Family
ID=50882302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112015013487-4A BR112015013487B1 (pt) | 2012-12-10 | 2013-11-04 | Sistema e método para alocar memória para dispositivos de memória diferentes utilizando qualidade de serviço |
Country Status (8)
Country | Link |
---|---|
US (2) | US9092327B2 (pt) |
EP (1) | EP2929440A1 (pt) |
JP (1) | JP5916970B2 (pt) |
KR (1) | KR101613826B1 (pt) |
CN (1) | CN104871143B (pt) |
BR (1) | BR112015013487B1 (pt) |
TW (1) | TWI534620B (pt) |
WO (1) | WO2014092883A1 (pt) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959298B2 (en) | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US9606916B2 (en) * | 2013-09-13 | 2017-03-28 | Samsung Electronics Co., Ltd. | Semiconductor devices including application processor connected to high-bandwidth memory and low-bandwidth memory, and channel interleaving method thereof |
US20150261662A1 (en) * | 2014-03-12 | 2015-09-17 | Advanced Micro Devices, Inc. | Address-partitioned multi-class physical memory system |
CN104954796B (zh) * | 2014-03-28 | 2019-06-11 | 联咏科技股份有限公司 | 视频处理装置与其视频处理电路 |
US9910767B2 (en) * | 2014-12-15 | 2018-03-06 | Toshiba Memory Corporation | Leveraging instruction RAM as a data RAM extension during use of a modified Harvard architecture processor |
US10491667B1 (en) * | 2015-03-16 | 2019-11-26 | Amazon Technologies, Inc. | Customized memory modules in multi-tenant service provider systems |
KR20170005561A (ko) | 2015-07-06 | 2017-01-16 | 현대자동차주식회사 | 히트석션 언더커버 |
US20170109090A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for page-by-page memory channel interleaving |
US20170108911A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for page-by-page memory channel interleaving |
US20170162235A1 (en) * | 2015-12-02 | 2017-06-08 | Qualcomm Incorporated | System and method for memory management using dynamic partial channel interleaving |
US10380342B2 (en) * | 2016-07-29 | 2019-08-13 | Qualcomm Incorporated | Kernel-based detection of target application functionality using virtual address mapping |
US20180032429A1 (en) * | 2016-07-29 | 2018-02-01 | Intel Corporation | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators |
US10055158B2 (en) * | 2016-09-22 | 2018-08-21 | Qualcomm Incorporated | Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems |
CN107704213B (zh) * | 2017-11-02 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种存储阵列的自动化服务质量管理方法及装置 |
KR102387977B1 (ko) | 2017-11-29 | 2022-04-19 | 삼성전자주식회사 | 적어도 두 개의 채널들을 통해 시스템 온 칩과 통신하는 메모리 장치, 이를 포함하는 전자 장치, 그리고 전자 장치의 동작 방법 |
KR102482896B1 (ko) | 2017-12-28 | 2022-12-30 | 삼성전자주식회사 | 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
KR102149153B1 (ko) * | 2018-10-08 | 2020-08-28 | 울산과학기술원 | 이종 메모리를 활용한 범용 gpu에서의 페이징 방법 및 장치 |
KR102257325B1 (ko) * | 2018-12-10 | 2021-05-27 | 한국과학기술원 | 다중 서비스 요청 및 맥락인지 기반의 IoT 카메라 가상화 장치 및 방법 |
US11726910B2 (en) * | 2019-03-13 | 2023-08-15 | Intel Corporation | Dynamic control of memory bandwidth allocation for a processor |
US11011223B2 (en) | 2019-08-27 | 2021-05-18 | Micron Technology, Inc. | Memory sub-system grading and allocation |
US11782835B2 (en) | 2020-11-30 | 2023-10-10 | Electronics And Telecommunications Research Institute | Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory |
US11749332B2 (en) * | 2021-02-11 | 2023-09-05 | Qualcomm Incorporated | Effective DRAM interleaving for asymmetric size channels or ranks while supporting improved partial array self-refresh |
US11789649B2 (en) * | 2021-04-22 | 2023-10-17 | Nvidia Corporation | Combined on-package and off-package memory system |
US11632337B1 (en) | 2021-10-11 | 2023-04-18 | Cisco Technology, Inc. | Compute express link over ethernet in composable data centers |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5341486A (en) | 1988-10-27 | 1994-08-23 | Unisys Corporation | Automatically variable memory interleaving system |
US5924117A (en) | 1996-12-16 | 1999-07-13 | International Business Machines Corporation | Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto |
US20020065922A1 (en) * | 2000-11-30 | 2002-05-30 | Vijnan Shastri | Method and apparatus for selection and redirection of an existing client-server connection to an alternate data server hosted on a data packet network (DPN) based on performance comparisons |
US20020075844A1 (en) * | 2000-12-15 | 2002-06-20 | Hagen W. Alexander | Integrating public and private network resources for optimized broadband wireless access and method |
US7120727B2 (en) | 2003-06-19 | 2006-10-10 | Micron Technology, Inc. | Reconfigurable memory module and method |
US8407433B2 (en) | 2007-06-25 | 2013-03-26 | Sonics, Inc. | Interconnect implementing internal controls |
BRPI0508582A (pt) | 2004-03-10 | 2007-08-14 | Qualcomm Inc | equipamento e método de interface de alta taxa de dados |
US7484065B2 (en) | 2004-04-20 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Selective memory allocation |
US7716669B2 (en) | 2004-04-30 | 2010-05-11 | Microsoft Corporation | Concurrent system applications in a multimedia console |
US7680830B1 (en) * | 2005-05-31 | 2010-03-16 | Symantec Operating Corporation | System and method for policy-based data lifecycle management |
US20070083482A1 (en) * | 2005-10-08 | 2007-04-12 | Unmesh Rathi | Multiple quality of service file system |
US7477257B2 (en) | 2005-12-15 | 2009-01-13 | Nvidia Corporation | Apparatus, system, and method for graphics memory hub |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
US20070180203A1 (en) | 2006-02-01 | 2007-08-02 | Madhusudhan Ramgarajan | Optimizing system performance in flexible interleaving memory mode |
US7707379B2 (en) | 2006-07-13 | 2010-04-27 | International Business Machines Corporation | Dynamic latency map for memory optimization |
US7620793B1 (en) | 2006-08-28 | 2009-11-17 | Nvidia Corporation | Mapping memory partitions to virtual memory pages |
US7768518B2 (en) | 2006-09-27 | 2010-08-03 | Intel Corporation | Enabling multiple instruction stream/multiple data stream extensions on microprocessors |
US20080250212A1 (en) * | 2007-04-09 | 2008-10-09 | Ati Technologies Ulc | Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information |
US8271827B2 (en) | 2007-12-10 | 2012-09-18 | Qimonda | Memory system with extended memory density capability |
US8289333B2 (en) | 2008-03-04 | 2012-10-16 | Apple Inc. | Multi-context graphics processing |
US8099539B2 (en) | 2008-03-10 | 2012-01-17 | Lsi Corporation | Method and system of a shared bus architecture |
US8397241B2 (en) | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
KR20100100395A (ko) | 2009-03-06 | 2010-09-15 | 삼성전자주식회사 | 복수의 프로세서를 포함하는 메모리 시스템 |
US8266389B2 (en) | 2009-04-29 | 2012-09-11 | Advanced Micro Devices, Inc. | Hierarchical memory arbitration technique for disparate sources |
US8451281B2 (en) | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US8407516B2 (en) | 2009-12-23 | 2013-03-26 | Intel Corporation | Controlling memory redundancy in a system |
US8669990B2 (en) | 2009-12-31 | 2014-03-11 | Intel Corporation | Sharing resources between a CPU and GPU |
US20110242427A1 (en) | 2010-04-01 | 2011-10-06 | Timothy Ramsdale | Method and System for Providing 1080P Video With 32-Bit Mobile DDR Memory |
US20110320751A1 (en) | 2010-06-25 | 2011-12-29 | Qualcomm Incorporated | Dynamic Interleaving Of Multi-Channel Memory |
US20120054455A1 (en) | 2010-08-31 | 2012-03-01 | Qualcomm Incorporated | Non-Uniform Interleaving Scheme In Multiple Channel DRAM System |
US20120066444A1 (en) | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation |
US8314807B2 (en) | 2010-09-16 | 2012-11-20 | Apple Inc. | Memory controller with QoS-aware scheduling |
CN103354939B (zh) | 2010-12-17 | 2016-03-16 | 艾沃思宾技术公司 | 用于使dram和mram访问交错的存储器控制器和方法 |
US8854387B2 (en) | 2010-12-22 | 2014-10-07 | Advanced Micro Devices, Inc. | Bundle-based CPU/GPU memory controller coordination mechanism |
WO2012148828A2 (en) | 2011-04-26 | 2012-11-01 | Lsi Corporation | Variable over-provisioning for non-volatile storage |
CN102426552B (zh) * | 2011-10-31 | 2014-06-04 | 华为数字技术(成都)有限公司 | 存储系统服务质量控制方法、装置和系统 |
US8959298B2 (en) | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
-
2013
- 2013-02-28 US US13/781,366 patent/US9092327B2/en active Active
- 2013-11-04 BR BR112015013487-4A patent/BR112015013487B1/pt active IP Right Grant
- 2013-11-04 JP JP2015546477A patent/JP5916970B2/ja active Active
- 2013-11-04 WO PCT/US2013/068217 patent/WO2014092883A1/en active Application Filing
- 2013-11-04 KR KR1020157017668A patent/KR101613826B1/ko active IP Right Grant
- 2013-11-04 CN CN201380064062.2A patent/CN104871143B/zh active Active
- 2013-11-04 EP EP13802138.1A patent/EP2929440A1/en not_active Ceased
- 2013-11-18 TW TW102141943A patent/TWI534620B/zh active
-
2015
- 2015-06-19 US US14/744,831 patent/US10067865B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016503911A (ja) | 2016-02-08 |
TW201439760A (zh) | 2014-10-16 |
EP2929440A1 (en) | 2015-10-14 |
TWI534620B (zh) | 2016-05-21 |
US20140164690A1 (en) | 2014-06-12 |
KR20150095725A (ko) | 2015-08-21 |
US10067865B2 (en) | 2018-09-04 |
WO2014092883A1 (en) | 2014-06-19 |
US20150286565A1 (en) | 2015-10-08 |
CN104871143A (zh) | 2015-08-26 |
JP5916970B2 (ja) | 2016-05-11 |
KR101613826B1 (ko) | 2016-04-19 |
CN104871143B (zh) | 2018-04-24 |
BR112015013487A2 (pt) | 2017-07-11 |
US9092327B2 (en) | 2015-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112015013487B1 (pt) | Sistema e método para alocar memória para dispositivos de memória diferentes utilizando qualidade de serviço | |
KR101627478B1 (ko) | 비대칭 메모리 컴포넌트들을 구비한 메모리 서브시스템에서 메모리를 동적으로 할당하는 시스템 및 방법 | |
JP6178512B2 (ja) | 選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法 | |
US11526440B2 (en) | Providing multiple memory modes for a processor including internal memory | |
KR101952562B1 (ko) | 홀수 계수 메모리 채널 인터리빙을 위한 시스템 및 방법 | |
JP2018518739A (ja) | 異種システムメモリにおけるメモリ消費電力を最適化するためのシステムおよび方法 | |
EP2929446B1 (en) | System and method for managing performance of a computing device having dissimilar memory types | |
US20180365425A1 (en) | Systems and methods for securely booting a system on chip via a virtual collated internal memory pool | |
US7991962B2 (en) | System and method of using threads and thread-local storage | |
CN118782131A (zh) | 自适应存储器元数据分配 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06G | Technical and formal requirements: other requirements [chapter 6.7 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 04/11/2013, OBSERVADAS AS CONDICOES LEGAIS |