Pular para o conteúdo

Hardware, bare-metal e assembly: o mapa

As partes 9, 14 e 16 da referência Deep Tech — e por que nenhuma delas se aplica a uma linguagem interpretada.

Três partes de uma referência Deep Tech tratam do que está abaixo de uma linguagem interpretada: SIMD e cache, bare-metal e kernel, assembly e microarquitetura.

A resposta honesta para quase tudo aqui é não se aplica — e esta página existe porque um silêncio seria lido como "ainda não fizemos", quando o certo é "isto não é uma lacuna: é o que a escolha de ser interpretada significa".

42–46 · Otimização de hardware (parte 9)#

ItemRespostaO que existe no lugar
SIMD, AVX2, AVX-512, ARM Neonnão se aplica: não há registrador vetorial alcançável do CPythona ponte para o numpy, que é vetorizado — a * 2 ali é a conta do numpy, não um laço
auto-vectorizationnão se aplica
cache L1/L2/L3, locality, prefetchnão se aplica: o custo de um interpretador de árvore domina qualquer efeito de cache em três ordens de grandezao que paga é tirar despacho do caminho quente — e isso está medido
false sharing, cache-line paddingnão se aplica
AoS vs SoAnão se aplica à memória, mas a ideia transfere: o `Quadro` é colunar por dentro, e é o que torna descrever e correlacao uma passada por colunaQuadro
branch prediction, branchless, pipeline stallsnão se aplica: quem prevê desvio é a CPU rodando o laço do CPython, não o seu given
bit manipulation, popcount, rotate, byteswapparcial: Arcane.Bytes faz bits, de_bits, ou_exclusivo, inverter e empacotamento com endiannessBytes
fences, atomic primitivesexistem, e são de verdade: C.atomico com CASSem trava
cycle counters, hardware performance countersnão se aplica: o CPython não os expõepercentis e pausas

62–64 · Bare-metal e embarcados (parte 14)#

ItemResposta
ausência de sistema operacional, entry points, linker scriptsnão se aplica: o DataForge precisa de um Python, e um Python precisa de um sistema operacional
memory maps, interrupt vectors, MMIO, volatilenão se aplica
kernel entry, page tables, syscalls, context switchingnão se aplica. A única troca de contexto aqui é a das fibras, e ela é um quadro de gerador
microcontroladores, ARM Cortex-M, RISC-V MCU, RTOSnão se aplica. Existe MicroPython para essa faixa, e ele não é esta linguagem
device drivers, DMA, low-powernão se aplica — mas falar com uma biblioteca C que fale com o dispositivo, sim: é `Arcane.C`

67–68 · Assembly e microarquitetura (parte 16)#

ItemResposta
inline assembly, external assembly, registers, CPU flagsnão se aplica
calling conventions, ABI, stack framesexistem, e são reais — mas só na fronteira com o C: `Arcane.C` declara a assinatura e o ctypes aplica a ABI da plataforma, com tamanho, alinhamento e padding de verdade
atomic instructionsC.atomico (CAS), sobre as primitivas do Python
pipeline, superscalar, out-of-order, register renamingnão se aplica: isso acontece na CPU, abaixo do CPython, abaixo do interpretador
TLB, memory ordering, hardware prefetchingnão se aplica
speculative executionnão se aplica — e vale notar que a ausência de ponteiro cru na linguagem tira o DataForge da superfície de ataque de Spectre por construção

O resumo honesto#

Das três partes, nenhuma tem implementação a fazer, e duas coisas transferiram: a ideia de layout colunar (que o Quadro já usa) e as convenções de chamada, que são reais na fronteira com o C.