Un ASIC est une usine à SHA-256
Pas d'écran, pas de clavier : un Antminer est un boîtier qui reçoit du courant, de l'eau et du travail par Ethernet, et qui renvoie des hashs. Sélectionnez un composant pour voir à quoi il sert.
Une hashboard ouverte : 216 puces, 18 domaines, une chaîne
Une des trois cartes de hachage, sortie de la machine et éclatée : la plaque froide et son circuit d'eau en haut, les 216 puces BM1368 au milieu, le circuit imprimé et son électronique en bas. Les points orange sont le travail qui descend la chaîne de puce en puce ; les points bleus, les résultats qui remontent. Cliquez sur un composant.
La puce BM1368 vue de dessus
Schéma de principe : une puce de minage est presque entièrement faite du même circuit, répété des centaines de fois. Autour, seulement l'indispensable : distribution du travail, liaison avec les puces voisines, filtre de résultats, horloge et diode thermique. Cliquez sur une zone.
Un moteur SHA-256 : le pipeline câblé
Le double SHA-256 gravé en 128 étages alignés. Un nouveau nonce entre à chaque tic d'horloge et avance d'un étage à chaque tic : 128 calculs sont en route en même temps, et un hash sort à chaque cycle. Cliquez sur une partie de la ligne.
Capot supérieur
Tôle d'aluminium · aucun ventilateur
Sur un Antminer refroidi par air, le capot laisse passer le flux de quatre ventilateurs bruyants. Sur un modèle Hydro, il ferme un boîtier presque étanche à l'air : toute la chaleur part dans l'eau, et la machine ne fait qu'une cinquantaine de décibels, celui de l'alimentation.
Carte de contrôle
SoC Amlogic A113D ou CVITEK CV1835 · Linux + bmminer
Le « cerveau » de la machine, à l'avant sous la poignée. Un petit ordinateur ARM fait tourner le firmware : il se connecte au pool de minage par Ethernet (protocole Stratum), distribue le travail aux trois cartes de hachage par liaison série (UART), lit les températures, règle fréquences et tensions, et arrête tout en cas de surchauffe. C'est aussi lui qui héberge l'interface web et les boutons IP Report / Reset.
- Port RJ45 10/100, micro-USB de secours, LEDs d'état
- Remplaçable sans toucher aux hashboards
- C'est ici que s'installe le firmware HappyMining
Nappes de données
3 nappes 18 broches (2 × 9, pas 2 mm)
Une nappe plate relie la carte de contrôle à chaque hashboard. Elle transporte la liaison série qui envoie les blocs de travail et ramène les résultats (les « shares ») et les mesures de température, plus quelques lignes d'alimentation 3,3 V pour la logique de la carte. Une nappe mal enfichée est la panne la plus fréquente : la carte apparaît alors « missing » dans l'interface.
Hashboards (cartes de hachage)
3 cartes · référence BHB686xx
Le cœur de l'ASIC : trois cartes identiques, chacune portant 216 puces de minage, leur alimentation et leurs capteurs. Les puces sont câblées en chaîne : la commande entre par la première et se propage jusqu'à la dernière. Chaque carte stocke sa propre identité (EEPROM) et calcule seule sa part de hashrate ; une machine fonctionne, dégradée, avec une ou deux cartes.
- Circuit imprimé multicouche avec plans de cuivre épais pour les centaines d'ampères
- 18 « domaines » de tension en série, 12 puces en parallèle par domaine
- Face puces contre la plaque froide, face composants vers l'extérieur
- Zoomez à fond ou cliquez sur « Hashboard » pour ouvrir une carte
Puces ASIC BM1368
648 puces (3 × 216) · ≈ 0,5 TH/s chacune
ASIC signifie Application-Specific Integrated Circuit : une puce qui ne sait faire qu'une chose, ici calculer des SHA-256 en double, des milliers de milliards de fois par seconde. Le BM1368 est la puce de la génération S21. La version Hydro en embarque deux fois plus que la version air (648 contre 324), chacune un peu moins poussée : c'est ce qui la rend plus efficace (16 J/TH contre 17,5).
- Chaque puce reçoit une plage de nonces à essayer et renvoie ceux qui donnent un hash sous la cible
- Une diode thermique intégrée dans chaque puce
- Si une puce meurt, toutes celles qui la suivent dans la chaîne deviennent muettes
Capteurs de température
2 par carte (T0 entrée, T1 sortie) · bus I²C
Deux capteurs numériques par carte (U4 et U5, notés T0 et T1), l'un côté arrivée d'eau, l'autre côté sortie, mesurent la température du circuit imprimé. Alimentés en 3,3 V par la carte de contrôle, ils sont lus sur un bus I²C. Le firmware surveille la carte et les puces : alarme à 80 °C pour la carte, à 95 °C pour les puces, puis mise en sécurité (Temperature is too high). Zoomez sur une hashboard (niveau suivant) pour voir leurs caractéristiques.
EEPROM et quartz
Identité de la carte · horloge 25 MHz
Une petite mémoire conserve le numéro de série de la carte, sa fréquence et sa tension d'usine, calibrées en fin de production : c'est pour cela qu'une hashboard de S21 ne se transplante pas n'importe où. À côté, un quartz à 25 MHz donne le tempo à toute la chaîne de puces. Sur la génération S21, l'EEPROM remplace le microcontrôleur PIC des S19.
Étage d'alimentation de la carte
≈ 21 V → 18 domaines en série · survolteur 25 V · LDO
L'alimentation envoie une vingtaine de volts directement sur la carte : ce sont les 18 domaines de puces, empilés en série, qui se partagent cette tension, environ 1,1 V chacun. À l'avant de la carte, un petit survolteur fabrique 25 V pour l'électronique de commande, et chaque domaine a ses propres régulateurs (LDO) pour le 1,2 V et le 0,8 V des entrées-sorties des puces. Inductances et condensateurs absorbent les appels de courant quand les puces changent de rythme.
Connecteurs de données
Embase 2 × 9 broches sur chaque carte
L'embase dans laquelle se branche la nappe venant de la carte de contrôle. Ses broches transportent la liaison série (TX/RX), le signal de remise à zéro de la chaîne, le bus I²C des capteurs et de l'EEPROM, et le 3,3 V. Un détrompeur évite de la brancher à l'envers.
Bornes de puissance
2 bornes vissées par carte · plusieurs centaines d'ampères
Une hashboard de S21 Hydro absorbe près de 1 800 W sous une vingtaine de volts, soit un courant proche de 90 A : rien à voir avec un connecteur de PC. Deux bornes en cuivre, serrées par vis sur les barres de l'alimentation, amènent ce courant. Une vis desserrée chauffe, noircit la carte et finit en panne : c'est un point de contrôle à chaque maintenance.
Plaques froides (water blocks)
Aluminium brasé · 8 à 10 L/min · eau de 20 à 50 °C
À la place du radiateur à ailettes d'un modèle air, chaque carte est vissée contre un bloc d'aluminium brasé, creusé de canaux dans lesquels circule l'eau. Les 216 puces y sont plaquées à travers une pâte thermique. L'eau entre par l'avant, traverse la plaque et ressort réchauffée de quelques degrés : 5 kW de chaleur à récupérer, par exemple pour chauffer un bâtiment ou une piscine.
- Eau pure, déionisée ou antigel selon le manuel, pression ≤ 3,5 bar
- Raccords rapides DN10 sur les collecteurs de la façade
- Sans circulation d'eau, les puces dépassent 80 °C en quelques secondes : le firmware coupe
Barres de distribution
Cuivre · de l'alimentation aux trois cartes
Deux barres de cuivre (+ et −) courent sous l'avant des cartes et relient les bornes de sortie de l'alimentation aux bornes des trois hashboards. Le cuivre massif remplace les câbles : moins de résistance, moins d'échauffement, et un montage que l'on démonte avec une seule clé.
Alimentation APW11 (refroidie par eau)
380–415 V triphasé → ~20 V DC · 300 A · 6,5 kW
L'alimentation intégrée occupe tout le flanc gauche. Elle transforme le triphasé 380–415 V en une tension continue de 17 à 21,6 V, avec un courant pouvant atteindre 300 A, et fournit un 12 V auxiliaire pour la carte de contrôle. Elle est elle-même refroidie par l'eau du circuit (sa propre plaque froide, entrée et sortie à l'avant). Rendement supérieur à 95 % : les 5 % restants partent aussi dans l'eau.
- Cordon LP20 triphasé, non fourni
- Pas de fonctionnement en monophasé 230 V sans convertisseur
- Le firmware module la tension pour les modes basse consommation et haute performance
Façade : raccords d'eau, réseau, alimentation
Entrée / sortie d'eau DN10 · collecteurs · RJ45 · prise triphasée
Tout se branche à l'avant. Une entrée et une sortie d'eau principales alimentent deux collecteurs qui desservent les trois plaques froides et l'alimentation. À gauche, la prise triphasée de l'alimentation, le port Ethernet, les voyants et les boutons de la carte de contrôle, l'étiquette avec le numéro de série. La machine se glisse dans un rack ou une armoire Antrack et se raccorde en quelques minutes.
Panneau arrière
Fermé : pas d'air à évacuer
Là où un modèle air expulse l'air chaud par deux ventilateurs, le modèle Hydro est fermé. Les machines peuvent donc être serrées les unes contre les autres dans une armoire, sans couloir chaud ni climatisation.
Châssis
339 × 173 × 207 mm · 12,3 kg
Une coque en tôle d'aluminium avec une cloison entre la baie de l'alimentation et la baie des hashboards, des rails de guidage latéraux et un plancher qui porte les cartes. Léger et compact : un rack Antrack reçoit quatre machines Hydro, soit plus de 20 kW de puissance de calcul dans un mètre carré.
Plaque froide
Aluminium · plaquée sur les 216 puces
Un bloc d'aluminium creusé de canaux, plaqué sur toutes les puces à travers une pâte thermique. Sur le S21 Hydro, il n'y a ni radiateur ni ventilateur : c'est l'eau qui emporte la chaleur de la carte, environ 1,8 kW. Les deux raccords à l'avant sont l'entrée et la sortie d'eau de la carte.
Circuit d'eau de la carte
3 à 3,5 L/min · 35 °C → ≈ 43 °C
L'eau entre par le bas de la carte, longe une moitié des puces jusqu'au fond, fait demi-tour et ressort par le haut. Avec 3 à 3,5 litres par minute et par carte, elle se réchauffe d'environ 8 °C en emportant 1,8 kW : une eau qui entre à 35 °C ressort vers 43 °C. Au-delà de 45 °C en sortie, la machine risque la surchauffe ; un débit trop faible ou une bulle d'air dans la plaque produisent le même effet.
216 puces BM1368
BM1 → BM216 · ≈ 0,5 TH/s et ≈ 8 W chacune
Les puces sont alignées en 18 colonnes de 12. Chacune reçoit son travail par la chaîne, essaie des milliards de nonces par seconde et ne renvoie que ceux qui donnent un hash assez petit. Dans la vue, une puce s'allume en orange quand le travail passe, en rose quand elle trouve un résultat. Le firmware les numérote de 0 à 215 : une carte saine affiche « ASIC 216/216 ».
La puce que nous allons ouvrir
BM1, la première de la chaîne · niveau suivant
BM1 est la première puce de la chaîne : elle reçoit le travail de la carte de contrôle et le transmet aux 215 autres. Zoomez à fond, ou cliquez sur « Puce BM1368 », pour entrer dedans.
La chaîne de signaux
CLK, CI, BO, RST : BM1 → BM216 · RO : retour
Les 216 puces sont reliées l'une à l'autre par une poignée de signaux, en chaîne :
- CI / CO : le travail (en-tête de bloc, plage de nonces) entre par BM1 et descend jusqu'à BM216 (points orange) ;
- RI / RO : les résultats remontent de puce en puce jusqu'à BM1, puis vers la carte de contrôle (points bleus) ;
- CLK : l'horloge de 25 MHz, transmise de puce en puce (l'onde qui parcourt les pistes) ;
- RST et BI / BO : la remise à zéro et un signal de contrôle, sur le même chemin.
Une seule liaison série pilote ainsi toute la carte. Revers de la médaille : une puce morte coupe la chaîne, et toutes celles qui la suivent deviennent muettes.
18 domaines de tension
12 puces en parallèle × 18 domaines en série
Une puce BM1368 se contente d'environ 1,1 V, mais sous un fort courant : alimenter les 216 puces en parallèle demanderait plus de 1 500 ampères par carte. La solution : grouper les puces par 12 en parallèle (un domaine), puis empiler les 18 domaines en série, comme les piles d'une lampe torche. L'alimentation envoie une vingtaine de volts et environ 85 A ; chaque domaine en prend 1,1 V et repose sur le précédent. C'est l'escalier qui s'affiche quand vous sélectionnez cette ligne.
Capteurs de température T0 et T1
U4 / U5 · I²C · 3,3 V · ±1 °C
Deux capteurs numériques, l'un côté entrée d'eau (T0), l'autre côté sortie (T1), mesurent la température du circuit imprimé. Ce sont de petits boîtiers à 8 broches de la famille des TMP75 : mesure sur 12 bits (résolution de 0,0625 °C), précision de l'ordre de ±1 °C, lus par la carte de contrôle sur un bus I²C et alimentés par elle en 3,3 V.
- Alarme à 80 °C pour la carte, à 95 °C pour les puces
- Un capteur muet empêche la carte de démarrer, par sécurité
- L'écart entre T0 et T1 renseigne sur le débit d'eau
EEPROM (U6)
Identité et calibration de la carte · I²C
Une petite mémoire qui garde le numéro de série de la carte, son modèle et ses réglages d'usine (fréquence et tension calibrées en fin de production). Le firmware la lit au démarrage ; une EEPROM vide ou illisible donne l'erreur « EEPROM NG » au banc de test. Sur cette génération, elle remplace le microcontrôleur PIC des S19.
Quartz 25 MHz (Y1)
L'horloge de toute la chaîne
Un quartz qui oscille 25 millions de fois par seconde. Son signal passe de puce en puce, de BM1 à BM216, et chaque puce le multiplie avec sa propre PLL pour cadencer ses moteurs de hachage à plusieurs centaines de mégahertz. Sans lui, aucune puce ne répond.
Connecteur de données (J1)
TX → BM1 · RX ← BM1 · RST · I²C · 3,3 V
La nappe venue de la carte de contrôle se branche ici. Elle apporte le travail (TX, en 3,3 V, ramené au niveau des puces par U1), le signal de remise à zéro, le bus I²C des capteurs et de l'EEPROM et le 3,3 V ; elle ramène les résultats (RX, via U2). Une nappe mal enfichée, et la carte disparaît de l'interface.
Bornes d'alimentation
VDD_IN+ / GND · ≈ 20 V · ≈ 85 A
Deux bornes en cuivre vissées aux barres de l'alimentation. Le moins (GND) rejoint le domaine 1 ; le plus (VDD_IN) longe la carte jusqu'au domaine 18. Le courant traverse ensuite les 18 domaines l'un après l'autre. Il n'y a pas de convertisseur entre l'alimentation et les puces : c'est l'alimentation, pilotée par la carte de contrôle, qui fixe la tension de la carte. Une vis desserrée chauffe et peut brûler la borne.
Survolteur 25 V (U9)
Tension de la carte → 25 V
Un petit convertisseur élévateur (une inductance, une puce de commande et des condensateurs) fabrique 25 V. Comme chaque domaine « flotte » plus haut que le précédent, les régulateurs des derniers domaines ont besoin d'une tension supérieure à celle de toute la carte : c'est ce 25 V qui les alimente, ainsi que les derniers level shifters.
Régulateurs (LDO)
4 par domaine · 1,2 V et 0,8 V
Chaque domaine a ses propres régulateurs linéaires : un pour le 1,2 V, trois pour le 0,8 V, chacun de ces derniers alimentant 4 puces. Ils fournissent les tensions des circuits d'entrée-sortie des puces, mesurées par rapport à la « masse » de leur domaine. Les deux derniers domaines, en haut de l'escalier, passent par des pré-régulateurs MP2019 alimentés par le survolteur.
Level shifters
17 · un à chaque marche entre deux domaines
Le domaine 2 repose 1,1 V plus haut que le domaine 1, le domaine 18 près de 20 V plus haut. Pour passer d'un domaine au suivant, les signaux de la chaîne doivent changer de référence : c'est le rôle de ces 17 traducteurs de niveau, épaulés par autant d'amplificateurs. Un level shifter en panne coupe la chaîne là où il se trouve.
Circuit imprimé
Référence BHB686xx · un plan de cuivre par domaine
Un circuit multicouche d'environ 30 cm. Sous chaque colonne de puces, un plan de cuivre forme le domaine ; un ruban de cuivre le long du bord amène le plus de l'alimentation jusqu'au dernier domaine. La sérigraphie numérote tout : BM1 à BM216, D1 à D18, U4 et U5 pour les capteurs, U6 pour l'EEPROM, Y1 pour le quartz.
Moteurs SHA-256
Le même circuit, répété sur toute la puce
Presque toute la surface de la puce est occupée par des moteurs de hachage identiques, en rangées : c'est ce qui la distingue d'un GPU, où le calcul partage la place avec les ordonnanceurs, les registres et les caches. Tous font le même travail au même rythme, sur des nonces différents. Ensemble, ils donnent environ 500 milliards de hashs par seconde (0,5 TH/s) à la puce.
Le moteur que nous allons ouvrir
Un moteur sur des centaines · niveau suivant
Un moteur en surbrillance : c'est lui que le niveau suivant détaille. Zoomez à fond pour voir son pipeline : le double SHA-256 câblé en étages, dans lequel les nonces avancent d'un étage à chaque cycle d'horloge.
Distribution du travail
En-tête du bloc + plages de nonces
Le travail arrive de la carte de contrôle : l'en-tête du bloc (dont les 64 premiers octets, qui ne changent pas, sont précalculés une fois) et une plage de nonces à essayer. Ce réseau le distribue à tous les moteurs, chacun recevant sa propre plage pour ne jamais calculer deux fois la même chose.
Liaison de chaîne
Commandes d'un côté, résultats de l'autre
Les 216 puces d'une hashboard sont branchées en chaîne : chaque puce reçoit les commandes de la précédente et les transmet à la suivante, et les résultats remontent dans l'autre sens jusqu'à la carte de contrôle. Une seule liaison série suffit pour piloter toute la carte, mais une puce défaillante rend muettes toutes celles qui la suivent.
Filtre de résultats
Ne renvoie que les nonces intéressants
Sur des milliers de milliards de hashs par seconde, seule une infime partie mérite d'être signalée. La puce ne renvoie que les nonces dont le hash passe sous un seuil fixé par la carte de contrôle : sans ce filtre, la liaison série serait saturée.
Horloge (PLL)
25 MHz du quartz → plusieurs centaines de MHz
Un circuit PLL multiplie la fréquence du quartz de la carte pour cadencer les moteurs. Plus l'horloge est rapide, plus la puce calcule, mais plus elle consomme et chauffe : c'est ce réglage, avec la tension, que modifie un firmware d'optimisation comme le firmware HappyMining.
Diode thermique intégrée
1 par puce · lue par un capteur externe
Une diode gravée dans le silicium, dont la tension varie avec la température de la puce. Un capteur externe peut la lire par deux broches dédiées : c'est ainsi que les mineurs open source comme le Bitaxe mesurent un BM1368. Sur la hashboard, la carte est surveillée en continu par ses deux capteurs T0 et T1.
Entrée : en-tête et nonce
Un nouveau nonce à chaque tic d'horloge
À l'entrée du pipeline, un registre garde la partie fixe de l'en-tête du bloc, et un compteur fournit un nouveau nonce à chaque cycle. Un nouveau calcul démarre ainsi à chaque cycle d'horloge, sans attendre que le précédent soit terminé.
64 étages : premier SHA-256
Un tour de compression par étage, gravé en dur
Chaque étage est un tour de la fonction SHA-256 réalisé en circuit : additions sur 32 bits, rotations, fonctions logiques Ch et Maj, et la constante K du tour câblée directement. Rien n'est lu en mémoire, rien n'est décodé : le signal traverse l'étage et passe au suivant au tic d'horloge suivant.
Planification du message
Les 64 mots W, préparés en parallèle
Le long de chaque voie court une seconde ligne, plus fine : elle prépare à partir du message les 64 mots que chaque étage consomme. Elle avance au même rythme que les données, si bien que chaque étage reçoit son mot pile au bon moment.
64 étages : second SHA-256
Bitcoin hache deux fois
Le bitcoin utilise un double SHA-256 : le résultat du premier passage repart aussitôt dans un second. Sur la puce, la ligne fait demi-tour et enchaîne 64 nouveaux étages : 128 étages au total entre l'entrée et la sortie.
Les nonces en route
128 calculs en cours en même temps
Voici le secret de la vitesse : le pipeline. Un calcul met 128 cycles pour traverser le circuit, mais comme un nouveau nonce entre à chaque cycle, 128 nonces sont traités en même temps, chacun à un étage différent, et un hash sort à chaque cycle. Aucun étage n'attend : c'est le débit maximal que permet le silicium.
Sortie : comparaison à la cible
Assez de zéros ? Le nonce est renvoyé
À l'arrivée, le hash est comparé à la cible : s'il est assez petit (s'il commence par assez de zéros), le nonce est envoyé au filtre de la puce puis à la carte de contrôle ; sinon il est simplement oublié. L'immense majorité des calculs finit ainsi, et c'est normal : miner, c'est essayer.