text:
# Heterogeneous System Architecture
Heterogeneous System Architecture (HSA) é um conjunto de especificações de vários fornecedores que permite a integração de unidades centrais de processamento e processadores gráficos no mesmo barramento, com memória e tarefas compartilhadas. O HSA está sendo desenvolvido pela HSA Foundation, que inclui (entre muitos outros) AMD e ARM. O objetivo declarado da plataforma é reduzir a latência de comunicação entre CPUs, GPUs e outros dispositivos de computação e tornar esses vários dispositivos mais compatíveis da perspectiva do programador,:3 aliviando o programador da tarefa de planejar a movimentação de dados entre memórias disjuntas de dispositivos (como deve ser feito atualmente com OpenCL ou CUDA).
CUDA e OpenCL, bem como a maioria das outras linguagens de programação bastante avançadas, podem usar HSA para aumentar seu desempenho de execução. A computação heterogênea é amplamente utilizada em dispositivos de sistema em chip, como tablets, smartphones, outros dispositivos móveis e consoles de videogame. O HSA permite que os programas usem o processador gráfico para cálculos de ponto flutuante sem memória ou agendamento separado.

## Justificativa
A lógica por trás do HSA é aliviar a carga dos programadores ao transferir cálculos para a GPU. Originalmente impulsionada exclusivamente pela AMD e chamada de FSA, a ideia foi estendida para abranger unidades de processamento além de GPUs, como DSPs de outros fabricantes.
- Etapas executadas ao descarregar cálculos para a GPU em um sistema não HSA
- Etapas executadas ao descarregar cálculos para a GPU em um sistema HSA, usando a funcionalidade HSA

As GPUs modernas são muito adequadas para executar instruções únicas, vários dados (SIMD) e instruções únicas, vários threads (SIMT), enquanto as CPUs modernas ainda estão sendo otimizadas para ramificação. etc.

## Visão geral
Originalmente introduzido por sistemas embarcados como o Cell Broadband Engine, o compartilhamento de memória do sistema diretamente entre vários participantes do sistema torna a computação heterogênea mais comum. A computação heterogênea em si se refere a sistemas que contêm múltiplas unidades de processamento – unidades centrais de processamento (CPUs), unidades de processamento gráfico (GPUs), processadores de sinais digitais (DSPs) ou qualquer tipo de circuito integrado específico para aplicações (ASICs). A arquitetura do sistema permite que qualquer acelerador, por exemplo, um processador gráfico, opere no mesmo nível de processamento que a CPU do sistema.
Entre seus principais recursos, o HSA define um espaço de endereço virtual unificado para dispositivos de computação: enquanto as GPUs tradicionalmente têm sua própria memória, separada da memória principal (CPU), o HSA exige que esses dispositivos compartilhem tabelas de páginas para que os dispositivos possam trocar dados compartilhando ponteiros. Isso deve ser suportado por unidades de gerenciamento de memória personalizadas.:6–7 Para tornar a interoperabilidade possível e também facilitar vários aspectos da programação, o HSA foi criado para ser independente de ISA tanto para CPUs quanto para aceleradores, e para oferecer suporte a linguagens de programação de alto nível.
Até agora, as especificações do HSA abrangem:

### Camada intermediária HSA
HSAIL (Heterogeneous System Architecture Intermediate Language), um conjunto de instruções virtuais para programas paralelos
- semelhante à LLVM Intermediate Representation e SPIR (usado por OpenCL e Vulkan)
- finalizado para um conjunto de instruções específico por um compilador JIT
- tomar decisões tardias sobre quais núcleos devem executar uma tarefa
- explicitamente paralelo
- suporta exceções, funções virtuais e outros recursos de alto nível
- suporte para depuração

### Modelo de memória HSA
- compatível com modelos de memória C++11, OpenCL, Java e .NET
- consistência relaxada
- projetado para oferecer suporte a linguagens gerenciadas (por exemplo, Java) e não gerenciadas (por exemplo, C)
- tornará muito mais fácil desenvolver compiladores de terceiros para uma ampla gama de produtos heterogêneos programados em Fortran, C++, C++ AMP, Java, et al.

### Despachante HSA e tempo de execução
- projetado para permitir enfileiramento de tarefas heterogêneo: uma fila de trabalho por núcleo, distribuição de trabalho em filas, balanceamento de carga por roubo de trabalho
- qualquer núcleo pode agendar trabalho para qualquer outro, incluindo ele mesmo
- redução significativa da sobrecarga de trabalho de agendamento para um núcleo

Os dispositivos móveis são uma das áreas de aplicação do HSA, na qual ele produz maior eficiência energética.

### Diagramas de blocos
As ilustrações abaixo comparam a coordenação CPU-GPU sob HSA em comparação com arquiteturas tradicionais.
- Arquitetura padrão com uma GPU discreta conectada ao barramento PCI Express. A cópia zero entre a GPU e a CPU não é possível devido às memórias físicas distintas.
- O HSA traz memória virtual unificada e facilita a passagem de ponteiros pelo PCI Express em vez de copiar todos os dados.
- Na memória principal particionada, uma parte da memória do sistema é alocada exclusivamente para a GPU. Como resultado, a operação de cópia zero não é possível.
- Memória principal unificada, onde GPU e CPU são habilitados para HSA. Isso torna possível a operação de cópia zero.[7]
- A MMU da CPU e a IOMMU da GPU devem estar em conformidade com as especificações de hardware HSA.

## Suporte de software
Alguns dos recursos específicos do HSA implementados no hardware precisam ser suportados pelo kernel do sistema operacional e por drivers de dispositivo específicos. Por exemplo, o suporte para placas de vídeo AMD Radeon e AMD FirePro, e APUs baseadas no Graphics Core Next (GCN), foi incorporado à versão 3.19 do kernel principal do Linux, lançada em 8 de fevereiro de 2015. Os programas não interagem diretamente com amdkfd, mas enfileiram seus trabalhos utilizando o tempo de execução do HSA. Esta primeira implementação, conhecida como amdkfd, foca em APUs "Kaveri" ou "Berlin" e funciona junto com o driver gráfico do kernel Radeon existente.
Adicionalmente, amdkfd oferece suporte ao heterogeneous queuing (HQ), que visa simplificar a distribuição de trabalhos computacionais entre várias CPUs e GPUs da perspectiva do programador. O suporte para gerenciamento de memória heterogênea (HMM), adequado apenas para hardware gráfico com a versão 2 do IOMMU da AMD, foi aceito na versão principal do kernel Linux 4.14.
O suporte integrado para plataformas HSA foi anunciado para o lançamento "Sumatra" do OpenJDK, previsto para 2015.
O AMD APP SDK é um kit de desenvolvimento de software proprietário da AMD voltado para computação paralela, disponível para Microsoft Windows e Linux. Bolt é uma biblioteca de modelos C++ otimizada para computação heterogênea.
O GPUOpen abrange algumas outras ferramentas de software relacionadas ao HSA. A versão 2.0 do CodeXL inclui um profiler HSA.

## Suporte de hardware

### AMD
Em fevereiro de 2015, apenas as APUs da série A "Kaveri" da AMD (cf. processadores para desktop "Kaveri" e processadores dispositivos móveis "Kaveri") e o PlayStation 4 da Sony permitiam que a GPU integrada acessasse a memória por meio da versão 2 do IOMMU da AMD. APUs anteriores (Trinity e Richland) incluíam a funcionalidade do IOMMU da versão 2, mas apenas para uso por uma GPU externa conectada via PCI Express.[carece de fontes?]
As APUs Carrizo e Bristol Ridge posteriores a 2015 também incluem a funcionalidade IOMMU versão 2 para a GPU integrada.[carece de fontes?]
A tabela a seguir mostra recursos das APUs da AMD
| Plataforma                                                                                | Plataforma                                                                                | Plataforma                                                                                | Alta, padrão e baixa potência    | Alta, padrão e baixa potência    | Alta, padrão e baixa potência    | Alta, padrão e baixa potência | Alta, padrão e baixa potência | Alta, padrão e baixa potência | Alta, padrão e baixa potência | Alta, padrão e baixa potência     | Alta, padrão e baixa potência     | Alta, padrão e baixa potência | Alta, padrão e baixa potência | Alta, padrão e baixa potência | Baixa e ultra baixa potência     | Baixa e ultra baixa potência | Baixa e ultra baixa potência           | Baixa e ultra baixa potência | Baixa e ultra baixa potência | Baixa e ultra baixa potência |
| Nome de código                                                                                | Servidor                                                                                | Basic                                                                                |                                  |                                  |                                  |                               |                               | Toronto                       |                               |                                   |                                   |                               |                               |                               |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Servidor                                                                                | Micro                                                                                |                                  |                                  |                                  |                               |                               |                               |                               |                                   |                                   |                               |                               |                               |                                  | Kyoto                        |                                        |                              |                              |                              |
| Nome de código                                                                                | Desktop                                                                                | Performance                                                                                |                                  |                                  |                                  |                               |                               |                               |                               |                                   |                                   | Renoir                        | Cezanne                       |                               |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Desktop                                                                                | Mainstream                                                                                | Llano                            | Trinity                          | Richland                         | Kaveri                        | Kaveri Refresh (Godavari)     | Carrizo                       | Bristol Ridge                 | Raven Ridge                       | Picasso                           | Renoir                        | Cezanne                       |                               |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Desktop                                                                                | Entrada                                                                                | Llano                            | Trinity                          | Richland                         | Kaveri                        | Kaveri Refresh (Godavari)     | Carrizo                       | Bristol Ridge                 | Raven Ridge                       | Picasso                           |                               |                               |                               |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Desktop                                                                                | Basic                                                                                |                                  |                                  |                                  |                               |                               |                               |                               |                                   |                                   |                               |                               |                               |                                  | Kabini                       |                                        |                              |                              |                              |
| Nome de código                                                                                | Mobile                                                                                | Performance                                                                                |                                  |                                  |                                  |                               |                               |                               |                               |                                   |                                   | Renoir                        | Cezanne                       | Rembrandt                     |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Mobile                                                                                | Mainstream                                                                                | Llano                            | Trinity                          | Richland                         | Kaveri                        |                               | Carrizo                       | Bristol Ridge                 | Raven Ridge                       | Picasso                           | Renoir                        | Cezanne                       | Rembrandt                     |                                  |                              |                                        |                              |                              |                              |
| Nome de código                                                                                | Mobile                                                                                | Entrada                                                                                | Llano                            | Trinity                          | Richland                         | Kaveri                        |                               |                               |                               |                                   |                                   |                               |                               |                               |                                  | Dalí                         |                                        |                              |                              |                              |
| Nome de código                                                                                | Mobile                                                                                | Basic                                                                                |                                  |                                  |                                  |                               |                               |                               |                               |                                   |                                   |                               |                               |                               | Desna, Ontario, Zacate           | Dalí                         | Kabini, Temash                         | Beema, Mullins               | Carrizo-L                    | Stoney Ridge                 |
| Nome de código                                                                                | Integrado                                                                                | Integrado                                                                                |                                  | Trinity                          |                                  | Bald Eagle                    |                               | Merlin Falcon, Brown Falcon   |                               | Great Horned Owl                  |                                   | Grey Hawk                     |                               |                               | Ontario, Zacate                  | Kabini                       | Steppe Eagle, Crowned Eagle, LX-Family |                              | Prairie Falcon               | Banded Kestrel               |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | --------------------------------- | --------------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | -------------------------------- | ---------------------------- | -------------------------------------- | ---------------------------- | ---------------------------- | ---------------------------- |
| Lançado                                                                                | Lançado                                                                                | Lançado                                                                                | Agosto de 2011                   | Outubro de 2012                  | Junho de 2013                    | Janeiro de 2014               | 2015                          | Junho de 2015                 | Junho de 2016                 | Outubro de 2017                   | Janeiro de 2019                   | Março de 2020                 | Janeiro de 2021               | Janeiro de 2022               | Janeiro de 2011                  | Maio 2013                    | Apr 2014                               | Maio de 2015                 | Fevereiro de 2016            | Abril de 2019                |
| Microarquitetura de CPU                                                                             | Microarquitetura de CPU                                                                             | Microarquitetura de CPU                                                                             | K10                              | Piledriver                       | Piledriver                       | Steamroller                   | Steamroller                   | Excavator                     | "Excavator+"                  | Zen                               | Zen+                              | Zen 2                         | Zen 3                         | Zen 3+                        | Bobcat                           | Jaguar                       | Puma                                   | Puma+                        | "Excavator+"                 | Zen                          |
| ISA                                                                                | ISA                                                                                | ISA                                                                                | x86-64                           | x86-64                           | x86-64                           | x86-64                        | x86-64                        | x86-64                        | x86-64                        | x86-64                            | x86-64                            | x86-64                        | x86-64                        | x86-64                        | x86-64                           | x86-64                       | x86-64                                 | x86-64                       | x86-64                       | x86-64                       |
| Socket                                                                                | Desktop                                                                                | High-end                                                                                | —                                | —                                | —                                | —                             | —                             | —                             | —                             | —                                 | —                                 | —                             | —                             | —                             | —                                | —                            | —                                      | —                            | —                            | —                            |
| Socket                                                                                | Desktop                                                                                | Mainstream                                                                                | —                                | —                                | —                                | —                             | —                             | AM4                           | AM4                           | AM4                               | AM4                               | AM4                           | AM4                           | —                             | —                                | —                            | —                                      | —                            | —                            | —                            |
| Socket                                                                                | Desktop                                                                                | Entrada                                                                                | FM1                              | FM2                              | FM2                              | FM2+                          | FM2+                          | FM2+                          | —                             | —                                 | —                                 | —                             | —                             | —                             | —                                | —                            | —                                      | —                            | —                            | —                            |
| Socket                                                                                | Desktop                                                                                | Basic                                                                                | —                                | —                                | —                                | —                             | —                             | —                             | —                             | —                                 | —                                 | —                             | —                             | —                             | —                                | AM1                          | —                                      | —                            | —                            | —                            |
| Socket                                                                                | Outros                                                                                | Outros                                                                                | FS1                              | FS1+, FP2                        | FS1+, FP2                        | FP3                           | FP3                           | FP4                           | FP4                           | FP5                               | FP5                               | FP6                           | FP6                           | FP7                           | FT1                              | FT3                          | FT3b                                   | FT3b                         | FP4                          | FP5                          |
| Versão PCI Express                                                                                | Versão PCI Express                                                                                | Versão PCI Express                                                                                | 2.0                              | 2.0                              | 2.0                              | 3.0                           | 3.0                           | 3.0                           | 3.0                           | 3.0                               | 3.0                               | 3.0                           | 3.0                           | 4.0                           | 2.0                              | 2.0                          | 2.0                                    | 2.0                          | 3.0                          | 3.0                          |
| Fab. (nm)                                                                                | Fab. (nm)                                                                                | Fab. (nm)                                                                                | GF 32SHP (HKMG SOI)              | GF 32SHP (HKMG SOI)              | GF 32SHP (HKMG SOI)              | GF 28SHP (HKMG bulk)          | GF 28SHP (HKMG bulk)          | GF 28SHP (HKMG bulk)          | GF 28SHP (HKMG bulk)          | GF 14LPP (FinFET bulk)            | GF 12LP (FinFET bulk)             | TSMC N7 (FinFET bulk)         | TSMC N7 (FinFET bulk)         | TSMC N6 (FinFET bulk)         | TSMC N40 (bulk)                  | TSMC N28 (HKMG bulk)         | GF 28SHP (HKMG bulk)                   | GF 28SHP (HKMG bulk)         | GF 28SHP (HKMG bulk)         | GF 14LPP (FinFET bulk)       |
| Area do Die (mm2)                                                                                | Area do Die (mm2)                                                                                | Area do Die (mm2)                                                                                | 228                              | 246                              | 246                              | 245                           | 245                           | 245                           | 250                           | 210                               | 210                               | 156                           | 180                           | 210                           | 75 (+ 28 FCH)                    | 107                          | 107                                    | ?                            | 125                          | 149                          |
| TDP min. (W)                                                                                | TDP min. (W)                                                                                | TDP min. (W)                                                                                | 35                               | 17                               | 17                               | 17                            | 17                            | 12                            | 12                            | 12                                | 12                                | 10                            | 10                            | 15                            | 4.5                              | 4                            | 3.95                                   | 10                           | 6                            | 6                            |
| TDP max. de APU (W)                                                                                | TDP max. de APU (W)                                                                                | TDP max. de APU (W)                                                                                | 100                              | 100                              | 100                              | 95                            | 95                            | 65                            | 65                            | 65                                | 65                                | 65                            | 65                            | 45                            | 18                               | 25                           | 25                                     | 25                           | 25                           | 25                           |
| Clock base max. de stock de APU (GHz)                                                               | Clock base max. de stock de APU (GHz)                                                               | Clock base max. de stock de APU (GHz)                                                               | 3                                | 3.8                              | 4.1                              | 4.1                           | 4.1                           | 3.7                           | 3.8                           | 3.6                               | 3.7                               | 3.8                           | 4.0                           | 3.3                           | 1.75                             | 2.2                          | 2                                      | 2.2                          | 3.2                          | 2.6                          |
| Máximo de APUs por nó                                                                               | Máximo de APUs por nó                                                                               | Máximo de APUs por nó                                                                               | 1                                | 1                                | 1                                | 1                             | 1                             | 1                             | 1                             | 1                                 | 1                                 | 1                             | 1                             | 1                             | 1                                | 1                            | 1                                      | 1                            | 1                            | 1                            |
| Max CPU cores por APU                                                                               | Max CPU cores por APU                                                                               | Max CPU cores por APU                                                                               | 4                                | 4                                | 4                                | 4                             | 4                             | 4                             | 4                             | 4                                 | 4                                 | 8                             | 8                             | 8                             | 2                                | 4                            | 4                                      | 4                            | 2                            | 2                            |
| Max threads por core de CPU                                                                         | Max threads por core de CPU                                                                         | Max threads por core de CPU                                                                         | 1                                | 1                                | 1                                | 1                             | 1                             | 1                             | 1                             | 2                                 | 2                                 | 2                             | 2                             | 2                             | 1                                | 1                            | 1                                      | 1                            | 1                            | 2                            |
| i386, i486, i586, CMOV, NOPL, i686, PAE, NX bit, CMPXCHG16B, AMD-V, RVI, ABM, e LAHF/SAHF de 64-bit | i386, i486, i586, CMOV, NOPL, i686, PAE, NX bit, CMPXCHG16B, AMD-V, RVI, ABM, e LAHF/SAHF de 64-bit | i386, i486, i586, CMOV, NOPL, i686, PAE, NX bit, CMPXCHG16B, AMD-V, RVI, ABM, e LAHF/SAHF de 64-bit | Yes                              | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | Yes                              | Yes                          | Yes                                    | Yes                          | Yes                          | Yes                          |
| IOMMU                                                                                | IOMMU                                                                                | IOMMU                                                                                | —                                | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | Yes                              | Yes                          | Yes                                    | Yes                          | Yes                          | Yes                          |
| BMI1, AES-NI, CLMUL, e F16C                                                                         | BMI1, AES-NI, CLMUL, e F16C                                                                         | BMI1, AES-NI, CLMUL, e F16C                                                                         | —                                | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | —                                | Yes                          | Yes                                    | Yes                          | Yes                          | Yes                          |
| MOVBE                                                                                | MOVBE                                                                                | MOVBE                                                                                | —                                | —                                | —                                | —                             | —                             | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | —                                | Yes                          | Yes                                    | Yes                          | Yes                          | Yes                          |
| AVIC, BMI2 e RDRAND                                                                                | AVIC, BMI2 e RDRAND                                                                                | AVIC, BMI2 e RDRAND                                                                                | —                                | —                                | —                                | —                             | —                             | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | —                                | —                            | —                                      | —                            | Yes                          | Yes                          |
| ADX, SHA, RDSEED, SMAP, SMEP, XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT, e CLZERO                         | ADX, SHA, RDSEED, SMAP, SMEP, XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT, e CLZERO                         | ADX, SHA, RDSEED, SMAP, SMEP, XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT, e CLZERO                         | —                                | —                                | —                                | —                             | —                             | —                             | —                             | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | —                                | —                            | —                                      | —                            | —                            | Yes                          |
| WBNOINVD, CLWB, RDPID, RDPRU, e MCOMMIT                                                             | WBNOINVD, CLWB, RDPID, RDPRU, e MCOMMIT                                                             | WBNOINVD, CLWB, RDPID, RDPRU, e MCOMMIT                                                             | —                                | —                                | —                                | —                             | —                             | —                             | —                             | —                                 | —                                 | Yes                           | Yes                           | Yes                           | —                                | —                            | —                                      | —                            | —                            | —                            |
| FPUs por core                                                                                | FPUs por core                                                                                | FPUs por core                                                                                | 1                                | 0.5                              | 0.5                              | 0.5                           | 0.5                           | 0.5                           | 0.5                           | 1                                 | 1                                 | 1                             | 1                             | 1                             | 1                                | 1                            | 1                                      | 1                            | 0.5                          | 1                            |
| Tubos por FPU                                                                                | Tubos por FPU                                                                                | Tubos por FPU                                                                                | 2                                | 2                                | 2                                | 2                             | 2                             | 2                             | 2                             | 2                                 | 2                                 | 2                             | 2                             | 2                             | 2                                | 2                            | 2                                      | 2                            | 2                            | 2                            |
| Largura do tubo FPU                                                                                | Largura do tubo FPU                                                                                | Largura do tubo FPU                                                                                | 128-bit                          | 128-bit                          | 128-bit                          | 128-bit                       | 128-bit                       | 128-bit                       | 128-bit                       | 128-bit                           | 128-bit                           | 256-bit                       | 256-bit                       | 256-bit                       | 80-bit                           | 128-bit                      | 128-bit                                | 128-bit                      | 128-bit                      | 128-bit                      |
| Nível SIMD do conjunto de instruções da CPU                                                         | Nível SIMD do conjunto de instruções da CPU                                                         | Nível SIMD do conjunto de instruções da CPU                                                         | SSE4a                            | AVX                              | AVX                              | AVX                           | AVX                           | AVX2                          | AVX2                          | AVX2                              | AVX2                              | AVX2                          | AVX2                          | AVX2                          | SSSE3                            | AVX                          | AVX                                    | AVX                          | AVX2                         | AVX2                         |
| 3DNow!                                                                                | 3DNow!                                                                                | 3DNow!                                                                                | Yes                              | —                                | —                                | —                             | —                             | —                             | —                             | —                                 | —                                 | —                             | —                             | —                             | —                                | —                            | —                                      | —                            | —                            | —                            |
| FMA4, LWP, TBM, e XOP                                                                               | FMA4, LWP, TBM, e XOP                                                                               | FMA4, LWP, TBM, e XOP                                                                               | —                                | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | Yes                           | —                                 | —                                 | —                             | —                             | —                             | —                                | —                            | —                                      | —                            | Yes                          | —                            |
| FMA3                                                                                | FMA3                                                                                | FMA3                                                                                | —                                | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | Yes                           | Yes                               | Yes                               | Yes                           | Yes                           | Yes                           | —                                | —                            | —                                      | —                            | Yes                          | Yes                          |
| Cache L1 de dados por núcleo (KiB)                                                                  | Cache L1 de dados por núcleo (KiB)                                                                  | Cache L1 de dados por núcleo (KiB)                                                                  | 64                               | 16                               | 16                               | 16                            | 16                            | 32                            | 32                            | 32                                | 32                                | 32                            | 32                            | 32                            | 32                               | 32                           | 32                                     | 32                           | 32                           | 32                           |
| Associatividade do cache de dados L1 (maneiras)                                                     | Associatividade do cache de dados L1 (maneiras)                                                     | Associatividade do cache de dados L1 (maneiras)                                                     | 2                                | 4                                | 4                                | 4                             | 4                             | 8                             | 8                             | 8                                 | 8                                 | 8                             | 8                             | 8                             | 8                                | 8                            | 8                                      | 8                            | 8                            | 8                            |
| Caches de instruções L1 por core                                                                    | Caches de instruções L1 por core                                                                    | Caches de instruções L1 por core                                                                    | 1                                | 0.5                              | 0.5                              | 0.5                           | 0.5                           | 0.5                           | 0.5                           | 1                                 | 1                                 | 1                             | 1                             | 1                             | 1                                | 1                            | 1                                      | 1                            | 0.5                          | 1                            |
| Cache máximo de instrução L1 total da APU (KiB)                                                     | Cache máximo de instrução L1 total da APU (KiB)                                                     | Cache máximo de instrução L1 total da APU (KiB)                                                     | 256                              | 128                              | 128                              | 192                           | 192                           | 192                           | 192                           | 256                               | 256                               | 256                           | 256                           | 256                           | 64                               | 64                           | 128                                    | 128                          | 96                           | 128                          |
| Associatividade de cache de instrução L1 (maneiras)                                                 | Associatividade de cache de instrução L1 (maneiras)                                                 | Associatividade de cache de instrução L1 (maneiras)                                                 | 2                                | 2                                | 2                                | 3                             | 3                             | 3                             | 3                             | 4                                 | 4                                 | 8                             | 8                             | 8                             | 2                                | 2                            | 2                                      | 2                            | 3                            | 4                            |
| Caches L2 por core                                                                                | Caches L2 por core                                                                                | Caches L2 por core                                                                                | 1                                | 0.5                              | 0.5                              | 0.5                           | 0.5                           | 0.5                           | 0.5                           | 1                                 | 1                                 | 1                             | 1                             | 1                             | 1                                | 1                            | 1                                      | 1                            | 0.5                          | 1                            |
| Cache L2 total de APU máximo (MiB)                                                                  | Cache L2 total de APU máximo (MiB)                                                                  | Cache L2 total de APU máximo (MiB)                                                                  | 4                                | 4                                | 4                                | 4                             | 4                             | 2                             | 2                             | 2                                 | 2                                 | 4                             | 4                             | 4                             | 1                                | 2                            | 2                                      | 2                            | 1                            | 1                            |
| Associatividade de cache L2 (maneiras)                                                              | Associatividade de cache L2 (maneiras)                                                              | Associatividade de cache L2 (maneiras)                                                              | 16                               | 16                               | 16                               | 16                            | 16                            | 16                            | 16                            | 8                                 | 8                                 | 8                             | 8                             | 8                             | 16                               | 16                           | 16                                     | 16                           | 16                           | 8                            |
| Cache L3 total da APU (MiB)                                                                         | Cache L3 total da APU (MiB)                                                                         | Cache L3 total da APU (MiB)                                                                         | —                                | —                                | —                                | —                             | —                             | —                             | —                             | 4                                 | 4                                 | 8                             | 16                            | 16                            | —                                | —                            | —                                      | —                            | —                            | 4                            |
| Associatividade de cache APU L3 (maneiras)                                                          | Associatividade de cache APU L3 (maneiras)                                                          | Associatividade de cache APU L3 (maneiras)                                                          | —                                | —                                | —                                | —                             | —                             | —                             | —                             | 16                                | 16                                | 16                            | 16                            | 16                            | —                                | —                            | —                                      | —                            | —                            | 16                           |
| Esquema de cache L3                                                                                | Esquema de cache L3                                                                                | Esquema de cache L3                                                                                | —                                | —                                | —                                | —                             | —                             | —                             | —                             | Victim                            | Victim                            | Victim                        | Victim                        | Victim                        | —                                | —                            | —                                      | —                            | —                            | Victim                       |
| Suporte max. de DRAM stock                                                                          | Suporte max. de DRAM stock                                                                          | Suporte max. de DRAM stock                                                                          | DDR3-1866                        | DDR3-1866                        | DDR3-2133                        | DDR3-2133                     | DDR3-2133                     | DDR3-2133, DDR4-2400          | DDR4-2400                     | DDR4-2933                         | DDR4-2933                         | DDR4-3200, LPDDR4-4266        | DDR4-3200, LPDDR4-4266        | DDR5-4800, LPDDR5-6400        | DDR3L-1333                       | DDR3L-1600                   | DDR3L-1866                             | DDR3L-1866                   | DDR3-1866, DDR4-2400         | DDR4-2400                    |
| Max. de canais DRAM por APU                                                                         | Max. de canais DRAM por APU                                                                         | Max. de canais DRAM por APU                                                                         | 2                                | 2                                | 2                                | 2                             | 2                             | 2                             | 2                             | 2                                 | 2                                 | 2                             | 2                             | 2                             | 1                                | 1                            | 1                                      | 1                            | 1                            | 2                            |
| Max. largura de banda DRAM de stock por APU (GB/s)                                                  | Max. largura de banda DRAM de stock por APU (GB/s)                                                  | Max. largura de banda DRAM de stock por APU (GB/s)                                                  | 29.866                           | 29.866                           | 34.132                           | 34.132                        | 34.132                        | 38.400                        | 38.400                        | 46.932                            | 46.932                            | 68.256                        | 68.256                        | 102.400                       | 10.666                           | 12.800                       | 14.933                                 | 14.933                       | 19.200                       | 38.400                       |
| Microarquitetura GPU                                                                                | Microarquitetura GPU                                                                                | Microarquitetura GPU                                                                                | TeraScale 2 (VLIW5)              | TeraScale 3 (VLIW4)              | TeraScale 3 (VLIW4)              | GCN 2nd gen                   | GCN 2nd gen                   | GCN 3rd gen                   | GCN 3rd gen                   | GCN 5th gen                       | GCN 5th gen                       | GCN 5th gen                   | GCN 5th gen                   | RDNA 2nd gen                  | TeraScale 2 (VLIW5)              | GCN 2nd gen                  | GCN 2nd gen                            | GCN 2nd gen                  | GCN 3rd gen                  | GCN 5th gen                  |
| Conjunto de instruções da GPU                                                                       | Conjunto de instruções da GPU                                                                       | Conjunto de instruções da GPU                                                                       | Conjunto de instruções TeraScale | Conjunto de instruções TeraScale | Conjunto de instruções TeraScale | Conjunto de instruções GCN    | Conjunto de instruções GCN    | Conjunto de instruções GCN    | Conjunto de instruções GCN    | Conjunto de instruções GCN        | Conjunto de instruções GCN        | Conjunto de instruções GCN    | Conjunto de instruções GCN    | Conjunto de instruções RDNA   | Conjunto de instruções TeraScale | Conjunto de instruções GCN   | Conjunto de instruções GCN             | Conjunto de instruções GCN   | Conjunto de instruções GCN   | Conjunto de instruções GCN   |
| Clock base da GPU de stock máximo (MHz)                                                             | Clock base da GPU de stock máximo (MHz)                                                             | Clock base da GPU de stock máximo (MHz)                                                             | 600                              | 800                              | 844                              | 866                           | 866                           | 1108                          | 1108                          | 1250                              | 1400                              | 2100                          | 2100                          | 2400                          | 538                              | 600                          | ?                                      | 847                          | 900                          | 1200                         |
| Max stock GPU base GFLOPS                                                                           | Max stock GPU base GFLOPS                                                                           | Max stock GPU base GFLOPS                                                                           | 480                              | 614.4                            | 648.1                            | 886.7                         | 886.7                         | 1134.5                        | 1134.5                        | 1760                              | 1971.2                            | 2150.4                        | 2150.4                        | 3686.4                        | 86                               | ?                            | ?                                      | ?                            | 345.6                        | 460.8                        |
| Motor 3D                                                                                | Motor 3D                                                                                | Motor 3D                                                                                | Até 400:20:8                     | Até 384:24:6                     | Até 384:24:6                     | Até 512:32:8                  | Até 512:32:8                  | Até 512:32:8                  | Até 512:32:8                  | Até 704:44:16                     | Até 704:44:16                     | Até 512:32:8                  | Até 512:32:8                  | 768:48:8                      | 80:8:4                           | 128:8:4                      | 128:8:4                                | 128:8:4                      | Até 192:?:?                  | Até 192:?:?                  |
| Motor 3D                                                                                | Motor 3D                                                                                | Motor 3D                                                                                | IOMMUv1                          | IOMMUv1                          | IOMMUv1                          | IOMMUv2                       | IOMMUv2                       | IOMMUv2                       | IOMMUv2                       | IOMMUv2                           | IOMMUv2                           | IOMMUv2                       | IOMMUv2                       | IOMMUv1                       | IOMMUv1                          | IOMMUv1                      | ?                                      | ?                            | IOMMUv2                      |                              |
| Decodificador de vídeo                                                                              | Decodificador de vídeo                                                                              | Decodificador de vídeo                                                                              | UVD 3.0                          | UVD 3.0                          | UVD 3.0                          | UVD 4.2                       | UVD 4.2                       | UVD 6.0                       | UVD 6.0                       | VCN 1.0                           | VCN 1.0                           | VCN 2.1                       | VCN 2.2                       | VCN 3.1                       | UVD 3.0                          | UVD 4.0                      | UVD 4.2                                | UVD 6.0                      | UVD 6.3]]                    | VCN 1.0                      |
| Codificador de vídeo                                                                                | Codificador de vídeo                                                                                | Codificador de vídeo                                                                                | —                                | VCE 1.0                          | VCE 1.0                          | VCE 2.0                       | VCE 2.0                       | VCE 3.1                       | VCE 3.1                       | VCN 1.0                           | VCN 1.0                           | VCN 2.1                       | VCN 2.2                       | VCN 3.1                       | —                                | VCE 2.0                      | VCE 2.0                                | VCE 3.1                      | VCE 3.1                      | VCN 1.0                      |
| Movimento Fluido AMD                                                                                | Movimento Fluido AMD                                                                                | Movimento Fluido AMD                                                                                | Não                              | Não                              | Não                              | Yes                           | Yes                           | Yes                           | Yes                           | Não                               | Não                               | Não                           | Não                           | Não                           | Não                              | Não                          | Yes                                    | Yes                          | Yes                          | Não                          |
| Economia de energia da GPU                                                                          | Economia de energia da GPU                                                                          | Economia de energia da GPU                                                                          | PowerPlay                        | PowerTune                        | PowerTune                        | PowerTune                     | PowerTune                     | PowerTune                     | PowerTune                     | PowerTune                         | PowerTune                         | PowerTune                     | PowerTune                     | PowerTune                     | PowerPlay                        | PowerTune                    | PowerTune                              | PowerTune                    | PowerTune                    | PowerTune                    |
| TrueAudio                                                                                | TrueAudio                                                                                | TrueAudio                                                                                | —                                | —                                | —                                | [ 23 ]                        | [ 23 ]                        | [ 23 ]                        | [ 23 ]                        | [ 23 ]                            | [ 23 ]                            | [ 23 ]                        | ?                             | ?                             | —                                | Yes                          | Yes                                    | Yes                          | Yes                          | Yes                          |
| FreeSync                                                                                | FreeSync                                                                                | FreeSync                                                                                | —                                | —                                | —                                | 1 2                           | 1 2                           | 1 2                           | 1 2                           | 1 2                               | 1 2                               | 1 2                           | 1 2                           | 1 2                           | —                                | 1 2                          | 1 2                                    | 1 2                          | 1 2                          | 1 2                          |
| HDCP                                                                                | HDCP                                                                                | HDCP                                                                                | ?                                | ?                                | ?                                | 1.4                           | 1.4                           | 1.4                           | 1.4                           | 1.4 2.2                           | 1.4 2.2                           | 1.4 2.2                       | 1.4 2.2                       | 1.4 2.2                       | ?                                | 1.4                          | 1.4                                    | 1.4                          | 1.4                          | 1.4 2.2                      |
| PlayReady                                                                                | PlayReady                                                                                | PlayReady                                                                                | —                                | —                                | —                                | —                             | —                             | —                             | —                             | 3.0 not yet                       | 3.0 not yet                       | 3.0 not yet                   | 3.0 not yet                   | 3.0 not yet                   | —                                | —                            | —                                      | —                            | —                            | 3.0 ainda não                |
| Telas compatíveis                                                                                | Telas compatíveis                                                                                | Telas compatíveis                                                                                | 2–3                              | 2–4                              | 2–4                              | 2–4                           | 2–4                           | 3                             | 3                             | 3 (desktop) 4 (mobile, integrado) | 3 (desktop) 4 (mobile, integrado) | 4                             | 4                             | 4                             | 2                                | 2                            | 2                                      | 2                            | 3                            | 4                            |
| /drm/radeon                                                                                | /drm/radeon                                                                                | /drm/radeon                                                                                | Yes                              | Yes                              | Yes                              | Yes                           | Yes                           | Yes                           | —                             | —                                 | —                                 | —                             | —                             | —                             | Yes                              | Yes                          | Yes                                    | Yes                          | —                            | —                            |
| /drm/amdgpu                                                                                | /drm/amdgpu                                                                                | /drm/amdgpu                                                                                | —                                | —                                | —                                | [ 28 ]                        | [ 28 ]                        | [ 28 ]                        | [ 28 ]                        | [ 28 ]                            | [ 28 ]                            | [ 28 ]                        | [ 28 ]                        | [ 28 ]                        | —                                | [ 28 ]                       | [ 28 ]                                 | [ 28 ]                       | [ 28 ]                       | [ 28 ]                       |

1. ↑  Para modelos Excavator FM2+: A8-7680, A6-7480 e Athlon X4 845.
2. ↑  Um PC seria um nó.
3. ↑  Uma APU combina uma CPU e uma GPU. Ambos têm núcleos.
4. ↑  Requer suporte de firmware
5. ↑  No SSE4. No SSSE3.
6. ↑  O desempenho de precisão simples é calculado a partir da velocidade de clock do núcleo base (ou boost) com base em uma operação FMA.
7. ↑  Shaders unificados : unidades de mapeamento de textura : unidades de saída de renderização
8. ↑  Para reproduzir conteúdo de vídeo protegido, também é necessário suporte a placa, sistema operacional, driver e aplicativo. Um monitor HDCP compatível também é necessário para isso. O HDCP é obrigatório para a saída de certos formatos de áudio, colocando restrições adicionais na configuração multimídia.
9. ↑  Para reproduzir conteúdo de vídeo protegido, também é necessário suporte a placa, sistema operacional, driver e aplicativo. Um monitor HDCP compatível também é necessário para isso. O HDCP é obrigatório para a saída de certos formatos de áudio, colocando restrições adicionais na configuração multimídia.
10. ↑  Para alimentar mais de dois monitores, os painéis adicionais devem ter suporte nativo para DisplayPort.[24] Alternativamente, adaptadores DisplayPort-to-DVI/HDMI/VGA ativos podem ser empregados.
11. ↑  DRM (Direct Rendering Manager) é um componente do kernel Linux. O suporte nesta tabela refere-se à versão mais atual.
12. ↑  DRM (Direct Rendering Manager) é um componente do kernel Linux. O suporte nesta tabela refere-se à versão mais atual.

### ARM
A microarquitetura Bifrost da ARM, conforme implementada no Mali-G71, é totalmente compatível com as especificações de hardware HSA 1.1. Em junho de 2016, a ARM não anunciou suporte de software que usaria esse recurso de hardware.

title: Heterogeneous System Architecture

wikitext:
'''Heterogeneous System Architecture''' ('''HSA''') é um conjunto de especificações de vários fornecedores que permite a integração de [[Unidade central de processamento|unidades centrais de processamento]] e [[Unidade de processamento gráfico|processadores gráficos]] no mesmo barramento, com [[Armazenamento de dados de computador|memória]] e tarefas compartilhadas.<ref>{{Citar web|ultimo=Tarun Iyer|url=http://www.tomshardware.com/news/AMD-HSA-hUMA-APU,22324.html|titulo=AMD Unveils its Heterogeneous Uniform Memory Access (hUMA) Technology|data=30 de abril de 2013|acessodata=2025-04-30|website=Tom's Hardware}}</ref> O HSA está sendo desenvolvido pela HSA Foundation, que inclui (entre muitos outros) [[Advanced Micro Devices|AMD]] e [[Arm Holdings|ARM]]. O objetivo declarado da plataforma é reduzir a latência de comunicação entre CPUs, GPUs e outros [[OpenCL|dispositivos de computação]] e tornar esses vários dispositivos mais compatíveis da perspectiva do programador,<ref name="whitepaper">{{Citar relatório|ultimo=George Kyriazis|data=2025-04-30|titulo=Heterogeneous System Architecture: A Technical Review|url=http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf|publicado=AMD|arquivourl=https://web.archive.org/web/20140328140823/http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf|arquivodata=28 de março de 2014|urlmorta=dead}}</ref>{{Rp|3}}<ref name="whatis">{{Citar web|url=http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/|titulo=What is Heterogeneous System Architecture (HSA)?|acessodata=2025-04-30|publicado=AMD|arquivourl=https://web.archive.org/web/20140621213832/http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/|arquivodata=21 de junho de 2014|urlmorta=dead}}</ref> aliviando o programador da tarefa de planejar a movimentação de dados entre memórias disjuntas de dispositivos (como deve ser feito atualmente com [[OpenCL]] ou [[CUDA]]).<ref>{{Citar web|ultimo=Joel Hruska|url=http://www.extremetech.com/gaming/164817-setting-hsail-amd-cpu-gpu-cooperation|titulo=Setting HSAIL: AMD explains the future of CPU/GPU cooperation|data=2013-08-26|acessodata=2025-04-30|website=[[ExtremeTech]]|publicado=[[Ziff Davis]]}}</ref>

CUDA e OpenCL, bem como a maioria das outras linguagens de programação bastante avançadas, podem usar HSA para aumentar seu desempenho de execução. A computação heterogênea é amplamente utilizada em dispositivos de [[Sistema em um chip|sistema em chip]], como [[tablet]]s, [[smartphone]]s, outros dispositivos móveis e [[Console de jogos eletrônicos|consoles de videogame]].<ref name="gpuscience">{{Citar web|url=http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|titulo=Heterogeneous System Architecture: Purpose and Outlook|data=2012-11-09|acessodata=2025-04-30|website=gpuscience.com|arquivourl=https://web.archive.org/web/20140201183411/http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|arquivodata=2014-02-01}}</ref> O HSA permite que os programas usem o processador gráfico para cálculos de [[Vírgula flutuante|ponto flutuante]] sem memória ou agendamento separado.<ref>{{Citar web|url=http://embedded-computing.com/articles/heterogeneous-processing-using-mix-cpu-gpu-elements/|titulo=Heterogeneous system architecture: Multicore image processing using a mix of CPU and GPU elements|acessodata=2025-04-30|website=Embedded Computing Design|arquivourl=https://web.archive.org/web/20130326174424/http://embedded-computing.com/articles/heterogeneous-processing-using-mix-cpu-gpu-elements/|arquivodata=26 de março de 2013}}</ref>

== Justificativa ==
A lógica por trás do HSA é aliviar a carga dos programadores ao transferir cálculos para a GPU. Originalmente impulsionada exclusivamente pela AMD e chamada de FSA, a ideia foi estendida para abranger unidades de processamento além de GPUs, como [[DSP]]s de outros fabricantes.

{{Galeria|File:HSA – using the GPU without HSA.svg|Etapas executadas ao descarregar cálculos para a [[Unidade de processamento gráfico|GPU]] em um sistema não HSA|File:HSA – using the GPU with HSA.svg|Etapas executadas ao descarregar cálculos para a GPU em um sistema HSA, usando a funcionalidade HSA|align=center}}

As GPUs modernas são muito adequadas para executar [[SIMD|instruções únicas, vários dados]] (SIMD) e instruções únicas, vários threads (SIMT), enquanto as CPUs modernas ainda estão sendo otimizadas para ramificação. etc.

== Visão geral ==
Originalmente introduzido por [[Sistema embarcado|sistemas embarcados]] como o [[Cell (microprocessador)|Cell Broadband Engine]], o compartilhamento de memória do sistema diretamente entre vários participantes do sistema torna a computação heterogênea mais comum. A computação heterogênea em si se refere a sistemas que contêm múltiplas unidades de processamento{{Spaced ndash}}[[Unidade central de processamento|unidades centrais de processamento]] (CPUs), [[Unidade de processamento gráfico|unidades de processamento gráfico]] (GPUs), [[DSP|processadores de sinais digitais]] (DSPs) ou qualquer tipo de [[Circuito integrado de aplicação especifica|circuito integrado específico para aplicações]] (ASICs). A arquitetura do sistema permite que qualquer acelerador, por exemplo, um [[Unidade de processamento gráfico|processador gráfico]], opere no mesmo nível de processamento que a CPU do sistema.

Entre seus principais recursos, o HSA define um espaço de endereço virtual unificado para dispositivos de computação: enquanto as GPUs tradicionalmente têm sua própria memória, separada da memória principal (CPU), o HSA exige que esses dispositivos compartilhem [[Página (memória de computador)|tabelas de páginas]] para que os dispositivos possam trocar dados compartilhando [[Ponteiro (programação)|ponteiros]]. Isso deve ser suportado por [[Unidade de gerenciamento de memória|unidades de gerenciamento de memória]] personalizadas.<ref name="whitepaper">{{Citar relatório|ultimo=George Kyriazis|data=2025-04-30|titulo=Heterogeneous System Architecture: A Technical Review|url=http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf|publicado=AMD|arquivourl=https://web.archive.org/web/20140328140823/http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf|arquivodata=28 de março de 2014|urlmorta=dead}}</ref>{{Rp|6–7}} Para tornar a interoperabilidade possível e também facilitar vários aspectos da programação, o HSA foi criado para ser independente de ISA tanto para CPUs quanto para aceleradores, e para oferecer suporte a linguagens de programação de alto nível.

Até agora, as especificações do HSA abrangem:

=== Camada intermediária HSA ===
HSAIL (Heterogeneous System Architecture Intermediate Language), um [[UCSD p-System|conjunto de instruções virtuais]] para programas paralelos

* semelhante à [[LLVM|LLVM Intermediate Representation]] e SPIR (usado por [[OpenCL]] e [[Vulkan]])
* finalizado para um conjunto de instruções específico por um [[JIT|compilador JIT]]
* tomar decisões tardias sobre quais núcleos devem executar uma tarefa
* explicitamente paralelo
* suporta exceções, funções virtuais e outros recursos de alto nível
* suporte para depuração

=== Modelo de memória HSA ===
* compatível com modelos de memória [[C++11]], OpenCL, [[Java (linguagem de programação)|Java]] e [[.NET Framework|.NET]]
* consistência relaxada
* projetado para oferecer suporte a linguagens gerenciadas (por exemplo, Java) e não gerenciadas (por exemplo, [[C (linguagem de programação)|C]])
* tornará muito mais fácil desenvolver compiladores de terceiros para uma ampla gama de produtos heterogêneos programados em [[Fortran]], C++, C++ AMP, Java, et al.

=== Despachante HSA e tempo de execução ===
* projetado para permitir enfileiramento de tarefas heterogêneo: uma fila de trabalho por núcleo, distribuição de trabalho em filas, balanceamento de carga por roubo de trabalho
* qualquer núcleo pode agendar trabalho para qualquer outro, incluindo ele mesmo
* redução significativa da sobrecarga de trabalho de agendamento para um núcleo

Os dispositivos móveis são uma das áreas de aplicação do HSA, na qual ele produz maior eficiência energética.<ref name="gpuscience">{{Citar web|url=http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|titulo=Heterogeneous System Architecture: Purpose and Outlook|data=2012-11-09|acessodata=2025-04-30|website=gpuscience.com|arquivourl=https://web.archive.org/web/20140201183411/http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|arquivodata=2014-02-01}}</ref>

=== Diagramas de blocos ===
As ilustrações abaixo comparam a coordenação CPU-GPU sob HSA em comparação com arquiteturas tradicionais.
{{Gallery
 | width  = 320
 | height = 190
 | align  = center
|File:Desktop computer bus bandwidths.svg
 |Arquitetura padrão com uma [[Unidade de processamento gráfico|GPU]] discreta conectada ao barramento [[PCI Express]]. A [[Zero-cópia|cópia zero]] entre a GPU e a CPU não é possível devido às memórias físicas distintas.

|File:HSA-enabled virtual memory with distinct graphics card.svg
   | O HSA traz memória virtual unificada e facilita a passagem de ponteiros pelo PCI Express em vez de copiar todos os dados.

|File:Integrated graphics with distinct memory allocation.svg
 |Na memória principal particionada, uma parte da memória do sistema é alocada exclusivamente para a GPU. Como resultado, a operação de cópia zero não é possível.

|File:HSA-enabled integrated graphics.svg
 |Memória principal unificada, onde GPU e CPU são habilitados para HSA. Isso torna possível a operação de cópia zero.<ref>{{cite web |url=http://www.semiaccurate.com/2014/01/15/technical-look-amds-kaveri-architecture/ |title=Kaveri microarchitecture |date=2014-01-15 |work=[[SemiAccurate]]}}</ref>

|File:MMU and IOMMU.svg
 |A [[Unidade de gerenciamento de memória|MMU]] da CPU e a [[Input–output memory management unit|IOMMU]] da GPU devem estar em conformidade com as especificações de hardware HSA.|align=center

}}
{{clear}}

== Suporte de software ==
[[Ficheiro:Linux_AMD_graphics_stack.svg|miniaturadaimagem|As GPUs AMD contêm certas unidades funcionais adicionais destinadas a serem usadas como parte do HSA. No Linux, o driver do kernel {{Mono|amdkfd}} fornece o suporte necessário.<ref>{{Citar web|ultimo=Michael Larabel|url=https://www.phoronix.com/scan.php?page=news_item&px=MTc0NTk|titulo=AMDKFD Driver Still Evolving For Open-Source HSA On Linux|data=21 de julho de 2014|acessodata=2025-04-30|publicado=[[Phoronix]]}}</ref><ref name="kernelnewbies-3.19">{{Citar web|url=http://kernelnewbies.org/Linux_3.19#head-ae54e026ef7588f4431f7e94178d27d5cd830bbf|titulo=Linux kernel 3.19, Section 1.3. HSA driver for AMD GPU devices|data=8 de fevereiro de 2015|acessodata=2025-04-30|website=kernelnewbies.org}}</ref>]]
Alguns dos recursos específicos do HSA implementados no hardware precisam ser suportados pelo [[Núcleo (sistema operacional)|kernel do sistema operacional]] e por drivers de dispositivo específicos. Por exemplo, o suporte para placas de vídeo AMD [[Radeon]] e [[AMD FirePro]], e APUs baseadas no [[Graphics Core Next]] (GCN), foi incorporado à versão 3.19 do [[Linux (núcleo)|kernel principal do Linux]], lançada em 8 de fevereiro de 2015.<ref name="kernelnewbies-3.19">{{Citar web|url=http://kernelnewbies.org/Linux_3.19#head-ae54e026ef7588f4431f7e94178d27d5cd830bbf|titulo=Linux kernel 3.19, Section 1.3. HSA driver for AMD GPU devices|data=8 de fevereiro de 2015|acessodata=2025-04-30|website=kernelnewbies.org}}</ref> Os programas não interagem diretamente com {{Mono|amdkfd}}, mas enfileiram seus trabalhos utilizando o tempo de execução do HSA.<ref>{{Citar web|url=https://github.com/HSAFoundation/HSA-Runtime-Reference-Source/blob/master/README.md|titulo=HSA-Runtime-Reference-Source/README.md at master|data=14 de novembro de 2014|acessodata=2025-04-30|website=github.com}}</ref> Esta primeira implementação, conhecida como {{Mono|amdkfd}}, foca em APUs "Kaveri" ou "Berlin" e funciona junto com o driver gráfico do kernel Radeon existente.

Adicionalmente, {{Mono|amdkfd}} oferece suporte ao ''heterogeneous queuing'' (HQ), que visa simplificar a distribuição de trabalhos computacionais entre várias CPUs e GPUs da perspectiva do programador. O suporte para ''gerenciamento de memória heterogênea'' (''HMM''), adequado apenas para hardware gráfico com a versão 2 do IOMMU da AMD, foi aceito na versão principal do kernel Linux 4.14.<ref>{{Citar web|url=https://www.xda-developers.com/linux-kernel-414/|titulo=Linux Kernel 4.14 Announced with Secure Memory Encryption and More|data=13 de novembro de 2017|acessodata=2025-04-30|arquivourl=https://web.archive.org/web/20171113231202/https://www.xda-developers.com/linux-kernel-414/|arquivodata=13 de novembro de 2017|urlmorta=dead}}</ref>

O suporte integrado para plataformas HSA foi anunciado para o lançamento "Sumatra" do [[OpenJDK]], previsto para 2015.<ref>{{Citar web|ultimo=Alex Woodie|url=http://www.hpcwire.com/2013/08/26/hsa_foundation_aims_to_boost_javas_gpu_prowess/|titulo=HSA Foundation Aims to Boost Java's GPU Prowess|data=26 de agosto de 2013|acessodata=2025-04-30|website=HPCwire}}</ref>

O [[AMD APP SDK]] é um kit de desenvolvimento de software proprietário da AMD voltado para [[computação paralela]], disponível para Microsoft Windows e Linux. Bolt é uma biblioteca de modelos C++ otimizada para computação heterogênea.<ref>{{Citar web|url=https://github.com/HSA-Libraries/Bolt|titulo=Bolt on github|data=11 de janeiro de 2022|acessodata=2025-04-30|website=[[GitHub]]}}</ref>

O [[GPUOpen]] abrange algumas outras ferramentas de software relacionadas ao HSA. A versão 2.0 do [[CodeXL]] inclui um profiler HSA.<ref>{{Citar web|ultimo=AMD GPUOpen|url=http://gpuopen.com/codexl-2-0-is-here-and-open-source/|titulo=CodeXL 2.0 includes HSA profiler|data=2016-04-19|acessodata=2025-04-30|arquivourl=https://web.archive.org/web/20180627034628/https://gpuopen.com/codexl-2-0-is-here-and-open-source/|arquivodata=27 de junho de 2018|urlmorta=dead}}</ref>

== Suporte de hardware ==
=== AMD ===
Em fevereiro de 2015, apenas as APUs da série A "Kaveri" da AMD (cf. [[Lista de processadores AMD com gráficos 3D#"Kaveri" (2014, 28 nm)|processadores para desktop "Kaveri"]] e [[Lista de processadores AMD com gráficos 3D#"Kaveri" 2014, 28 nm|processadores dispositivos móveis "Kaveri"]]) e o [[PlayStation 4]] da Sony permitiam que a [[Unidade de processamento gráfico#Unidade de processamento gráfico integrada|GPU integrada]] acessasse a memória por meio da versão 2 do IOMMU da AMD. APUs anteriores (Trinity e Richland) incluíam a funcionalidade do IOMMU da versão 2, mas apenas para uso por uma GPU externa conectada via PCI Express.{{carece de fontes}}

As APUs Carrizo e Bristol Ridge posteriores a 2015 também incluem a funcionalidade IOMMU versão 2 para a GPU integrada.{{carece de fontes}}

{{Recursos de APU AMD}}

=== ARM ===
A microarquitetura [[Mali (GPU)#Bifrost|Bifrost]] da ARM, conforme implementada no Mali-G71,<ref>{{Citar web|url=http://www.anandtech.com/show/10375/arm-unveils-bifrost-and-mali-g71/5|titulo=ARM Bifrost GPU Architecture|data=2016-05-30|acessodata=2025-04-30}}</ref> é totalmente compatível com as especificações de hardware HSA 1.1. Em junho de 2016, a ARM não anunciou suporte de software que usaria esse recurso de hardware.

== Ver também ==
* [[GPGPU|Computação de uso geral em unidades de processamento gráfico]] (GPGPU)
* [[Acesso não uniforme a memória|Acesso de memória não uniforme]] (NUMA)
* [[OpenMP]]
* [[Memória compartilhada]]
* [[Zero-cópia|Cópia zero]]

{{Referências}}

== Ligações externas ==
{{Commonscat}}
* {{YouTube|id=ln8JpfaLvbM|title=HSA Heterogeneous System Architecture Overview}} by Vinod Tipparaju at [[ACM/IEEE Supercomputing Conference|SC13]] in November 2013
* [https://web.archive.org/web/20160514070602/http://www.mpsoc-forum.org/previous/2013/slides/8-Hegde.pdf HSA and the software ecosystem]
* [http://www-conf.slac.stanford.edu/xldb2012/talks/xldb2012_wed_1400_MichaelHouston.pdf 2012 – HSA by Michael Houston] {{Webarchive|url=https://web.archive.org/web/20160305141652/http://www-conf.slac.stanford.edu/xldb2012/talks/xldb2012_wed_1400_MichaelHouston.pdf|date=5 de março de 2016}}

{{Processamento gráfico AMD}}


text:
# Indianapolis 500: The Simulation
Indianapolis 500: The Simulation é um jogo de computador lançado para o MS-DOS em 1989. Foi considerado como um dos primeiros passos para iniciar a disputa entre os jogos de corrida simuladores e os jogos de corrida arcade.  Foi desenvolvido pelo Papyrus Design Group e distribuído pela Electronic Arts, a versão pra o Amiga foi lançada em 1990.
O jogo tenta proporcionar uma simulação completa da corrida de Indianápolis 500, com 33 carros e a "sensação" apropriada de um carro da Fórmula Indy. Durante a corrida, ele oferece apenas uma perspectiva em primeira pessoa, mas o jogo também oferece um modo replay. O jogo oferece a capacidade de configurar o carro de forma realista, e quaisquer alterações feitas no carro afetam diretamente como ele se comporta.
A corrida é representada de forma realista e a ordem de qualificação permanece fiel ao grid de largada da edição de 1989 das 500 Milhas de Indianápolis.

wikiname: ptwiki

title: Indianapolis 500: The Simulation

in_language: pt

wikitext:
{{Infobox VG
|title = Indianapolis 500: The Simulation
|developer = Papyrus Design Group
|publisher = [[Electronic Arts]]
|producer = Richard Hilleman
|designer = David Kaemmer
|programmer = David Kaemmer
Scott Cronce
Richard Garcia
|artist = Nancy L. Fong
Wilfredo J. Aguilar
|composer = Rob Hubbard
|released = 1989 - [[DOS]]
1990 - [[Amiga]]
|genre = [[Simulador de corrida]]
|modes = [[Single-player video game|Single-player]]
|platforms = [[DOS]], [[Amiga]]
}}
'''Indianapolis 500: The Simulation''' é um [[jogo de computador]] lançado para o [[MS-DOS]] em [[1989]]. Foi considerado como um dos primeiros passos para iniciar a disputa entre os jogos de corrida [[simuladores]] e os jogos de corrida [[arcade]].  Foi desenvolvido pelo Papyrus Design Group e distribuído pela [[Electronic Arts]], a versão pra o [[Amiga]] foi lançada em [[1990]].<ref>{{cite news |url=https://forum.adrenaline.com.br/threads/indianapolis-500-the-simulation-um-importante-capitulo-dos-games-de-corrida.651877/ |title=Indianapolis 500: The Simulation, um importante capítulo dos games de corrida |work=Adrenaline}}</ref>

O jogo tenta proporcionar uma simulação completa da corrida de [[Indianápolis 500]], com 33 carros e a "sensação" apropriada de um carro da [[Fórmula Indy]]. Durante a corrida, ele oferece apenas uma perspectiva em primeira pessoa, mas o jogo também oferece um modo [[replay]]. O jogo oferece a capacidade de configurar o carro de forma realista, e quaisquer alterações feitas no carro afetam diretamente como ele se comporta.<ref>{{cite news |url=https://flatout.com.br/indianapolis-500-the-simulation-o-primeiro-simulador-de-corridas-da-historia/ |title=Indianapolis 500: The Simulation – o primeiro simulador de corridas da história |work=FlatOut}}</ref>

A corrida é representada de forma realista e a ordem de qualificação permanece fiel ao grid de largada da edição de 1989 das [[500 Milhas de Indianápolis]].
== Ver também ==
* [[IndyCar Racing]]
* [[NASCAR Racing 2003 Season]]

== Referências ==

[[Categoria:Simuladores]]
[[Categoria:500 Milhas de Indianápolis]]
[[Categoria:Jogos eletrônicos de 1989]]
[[Categoria:Jogos para Amiga]]
[[Categoria:Jogos para DOS]]

title: Indianapolis 500: The Simulation

Desenvolvedora(s): Papyrus Design Group

Publicadora(s): Electronic Arts

Produtor(es): Richard Hilleman

Designer(s): David Kaemmer

Programador(es): David Kaemmer · Scott Cronce · Richard Garcia

Artista(s): Nancy L. Fong · Wilfredo J. Aguilar

Compositor(es): Rob Hubbard

Plataforma(s): DOS, Amiga

Gênero(s): Simulador de corrida

Modos de jogo: Single-player