COMPTOIR
register

×

cpu logisim t

Processeurs open-source : terminologie d'un fantasme
cpu logisim t

Quand on parle d'architecture Zen ou Skylake, on comprend de suite qu'il est question d'une microarchitecture pour PC de bureau - moyennant quelques ajustements - sur laquelle le x86 est le langage compris par ces processeur. À l'opposé, pour les CPU ARM, la confusion est totale entre le jeu d'instruction ARMv8a, qui est une norme d'encodage de l'assembleur fourni au CPU, et l'architecture Cortex-AXX, qui représente quant à elle l'agencement interne de la puce.

 

Nous vous parlons assez régulièrement du RISC-V qui, s'il a une influence croissante dans la recherche publique, n'est pas nouveau ni près d'arriver dans un CPU grand public. Derrière se terme se cache un jeu d'instruction libre.... Qui n'est pas le premier de son domaine. Tout comme OpenSPARC ou OpenRISC, deux autres prétendants respectivement datant de 2006 et 2000, des plateformes de démonstrations et d’implémentations sur FPGA sont disponibles, mais les industriels sont encore très frileux à l'idée de plonger dans un monde nouveau - ouvert qui plus est. Quand le pas est fait, rares sont les designs de silicium mis à disposition - et pour cause : la culture du secret industriel et la présence, supposée ou avérée, de backdoors n'incite aucunement les ténors du secteur à une transparence totale.

 

Néanmoins, les technologies actuelles ne sont pas les mêmes qu'il y a dix ans. La loi de Moore ralentit, de sorte que la seule manière d'extraire plus de puissance réside dans la customisation des coeurs selon l'utilisation souhaitée. De plus, l'idée d'un jeu d'instruction libre permet, selon Chris Jones, le responsable de la section marketing de Codasip, une start-up tchèque spécialisée dans le développement et la vérification de design, de se baser sur trois piliers : un modèle de licence juste, la possibilité d'améliorer le design et ainsi laisser sa patte, et surtout la capacité à se détacher d'un vendeur en particulier. Au vu de l'évolution des rapports de force côté CPU, ce dernier avantage est loin d'être anodin. Si les derniers investissements des grands acteurs (NVIDIA, Western Digital) laissent à penser que le libre à le vent en poupe, les réelles implémentations RTL - le langage de description matériel utilisé - ne sont pas (encore ?) disponible. Il faut dire que ce dernier requiert des designers pointus, mais aussi des ingénieurs pour la vérification, les partenaires pour l'intégration et surtout un support et une maintenance, chose que la communauté open source peut difficilement apporter sans un mécène externe. Pourtant, la flexibilité incroyable lié à une éventuelle base de données ouverte de modèles fait se tourner bien des têtes dans le privé... À voir si le futur apportera une solution durable à ce sac de nœuds ! (Source : SemiEngineering)

 

cpu logisim t [cliquer pour agrandir]

Bientôt des vraies implémentations libres ?

Un poil avant ?

Des nouveaux boitiers H à façade vitrée chez Thermaltake

Un peu plus tard ...

Et ça commence, les premières RTX Super en images !

Les 14 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un ragoteur breton en Île-de-France, le Mercredi 03 Juillet 2019 à 20h45  
Je ne suis pas sûr que pour les gros poissons comme Intel / Nvidia / ..., laisser ou utiliser du RTL libre conduise à beaucoup d'avancées. D'une part parce que quand tu conçois un ASIC, tu as l'étape du floorplanning + routage avec toutes les contraintes de puissance, dissipation, timing, et in fine de la techno de gravure, que le RTL n'exprime pas. Faire de l'ASIC c'est autrement plus compliqué que du FPGA... (je n'ai moi même jamais fait d'ASIC, soyons honnêtes)

D'autre part, la structure des unités de calcul, c'est ce qui fait la différence de perf entre deux designs, à jeux d'instructions similaires. Du coup, si tu n'as plus de secret dessus, quelles armes te reste-t-il contre la concurrence ?

Enfin, pour vérifier qu'un design n'a pas de backdoor avec le RTL, bon courage : tracer chaque porte du design placé-routé me semble être un cauchemar sans nom (est-ce que c'est même faisable ?) et coûter une blinde + des ingés au top...

par Un ragoteur en Île-de-France, le Mardi 02 Juillet 2019 à 16h32  
par Nicolas D. le Lundi 01 Juillet 2019 à 18h35
D'ailleurs dans ton lien, on voit encore trop peu d'acteurs privés (à part SiFive, qui a donné... 5 design ?
Il y a quand même Western Digital qui est un gros poissons dans la liste que j'ai donné, il y a de quoi avoir de l'espoir

Sinon, oui en fpga on a pas les mêmes problématiques et utiliser des RTLs opensource pour faire des designs sur FPGA c'est sympa.
Mais si on veut des CPUs qui peuvent rivaliser avec ceux qu'on a dans nos machines il faut de l'ASIC
par Un #ragoteur qui te Gnome du Grand Est, le Lundi 01 Juillet 2019 à 22h46  
[/quote]En même temps, pour la majorité des gens, Arm est une marque, sans savoir ce que l'acronyme signifie et encore moins si cela à une correspondance technique. On dit une archi ARM comme on dit une archi Intel ou AMD, entendu "créée par". Y voir un abus de langage c'est pousser le boucher un peu top loin Maurice.
par Un ragoteur qui draille en Île-de-France, le Lundi 01 Juillet 2019 à 22h22  
par Un programmeur en Nouvelle-Aquitaine le Lundi 01 Juillet 2019 à 14h03
Euh... Non !

Le langage du CPU est le langage (ou code) machine, des suites d'octets qui représentent les instructions et leur opérandes.
L'assembleur est un programme (qui permet de traduire en code machine des mnémoniques alphabétiques compréhensibles et mémorisables par un humain), et par abus de langage... le langage lui-même.
Ouep, en fait l'assembleur n'est qu'une mise en forme textuelle compréhensible. Effectivement à regarder du code binaire on va même avoir du mal à discerner arguments des instructions.
D'ailleurs le recours à un désassembleur est "très souhaitable" pour lire du langage machine/binaire.
Par contre il existe des décompilateurs très performants qui arrivent à générer du code C très lisible tant qu'on n'a pas protégé son programme d'une façon assez lourde (comme une compression /chiffrement). Dans ce cas il faut aller le décompiler une fois en mémoire ... bref... voire rubrique comment hacker les jeux protégés...
par Nicolas D., le Lundi 01 Juillet 2019 à 19h03  
par Un programmeur en Nouvelle-Aquitaine le Lundi 01 Juillet 2019 à 18h26
Au risque de me rendre coupable d'enc... de mouches, non, il n'y a pas bijection stricto sensu, car vous perdez tous les symboles (noms des constantes utilisées, par exemple), les macros, les tables de données statiques et la façon dont elles sont organisées, etc...
Oui, vous pourriez désassembler le code machine et le réassembler pour obtenir le même binaire, mais bonne chance pour comprendre le programme uniquement à partir du code machine désassemblé !

A ce titre de (fausse) "bijection", vous pourriez tout aussi bien prétendre que l'on peut assimiler le C et le code machine (après tout, il existe aussi des "désassembleurs" pour le C)...
La vraie différence c'est que très peu de gens codent en assembleur et beaucoup plus en C ; et que le code C passé en -O2 est bien plus difficilement compréhensible que l'ASM décompilé... mais il est vrai que sans nom de label par exemple, on est mal !
par Nicolas D., le Lundi 01 Juillet 2019 à 18h35  
par Un ragoteur en Auvergne-Rhône-Alpes le Lundi 01 Juillet 2019 à 17h57
Deja il existe de nombreux RTLs opensource serieux de RISC-V Github: RISC-V-Cores-and-SoCs.
Mais avec un RTL d'un core RISC-V vous etes loin d'avoir un processeur!
Pour commencer le Core doit être integré dans un SoC avec des perifs pour communiquer avec l'exterieur.
Bon ça tombe bien, il y a aussi des RTLs de SoC open-source dans mon lien.

Mais même avec un RTL de SoC c'est pas gagné ! Le RTL est une description hardware qui ne cible aucune techno
Pour cibler une techno, par exemple rêvons d'un 10nm chez TSMC, il faut générer un GDS à partir du RTL.

On est donc bien au dela du fantasme quand on imagine prendre un RTL gratuit et puis pouf! .. Avoir un son CPU pas trop cher.

Vous parlez de backdoor aussi, mais attention il ne faut pas s'imaginer que avec un RTL opensource vous ne risquez pas d'avoir de backdoor.

source: je travaille pour une entreprise fabless de semi-condicteur Française.
Merci pour le complément le but est d'être informatif et non exhaustif. D'ailleurs dans ton lien, on voit encore trop peu d'acteurs privés (à part SiFive, qui a donné... 5 design ?). Mais oui, ça bouge et c'est pour ça qu'on en parle.

Si la section backdoor est mal rédigée je m'en excuse, l'idée est justement de dire que reprendre un design libre est une garantie de l'absence de backdoor (voire un argument juridique de tromperie en cas de découverte, quoique je ne soit pas expert du domaine). Je ne connaissais pas le GDS en tant que tel, mais effectivement pour avoir fait des design FPGA ca ne me surprend pas du tout ! Merci encore
par Un programmeur en Nouvelle-Aquitaine, le Lundi 01 Juillet 2019 à 18h26  
par Nicolas D. le Lundi 01 Juillet 2019 à 16h45
Pour être compris, il faut être concis... Mais c'est ce que je raconte dans le dossier architecture des processeurs . Et comme tu le soulignes il y a une bijection entre le code assembleur et le binaire compris par le CPU généré par cet assembleur (le programme cette fois-ci). Pour faciliter la compréhension, Autant identifier l'un à l'autre tant qu'on reste sur un focus général , c'est assez complexe comme ça .
Au risque de me rendre coupable d'enc... de mouches, non, il n'y a pas bijection stricto sensu, car vous perdez tous les symboles (noms des constantes utilisées, par exemple), les macros, les tables de données statiques et la façon dont elles sont organisées, etc...
Oui, vous pourriez désassembler le code machine et le réassembler pour obtenir le même binaire, mais bonne chance pour comprendre le programme uniquement à partir du code machine désassemblé !

A ce titre de (fausse) "bijection", vous pourriez tout aussi bien prétendre que l'on peut assimiler le C et le code machine (après tout, il existe aussi des "désassembleurs" pour le C)...
par Un ragoteur en Auvergne-Rhône-Alpes, le Lundi 01 Juillet 2019 à 17h57  
Oula, je pense qu'il y a de grosses confusions dans tout ça. Il faut faire attention à vos sources.

Deja il existe de nombreux RTLs opensource serieux de RISC-V Github: RISC-V-Cores-and-SoCs.
Mais avec un RTL d'un core RISC-V vous etes loin d'avoir un processeur!
Pour commencer le Core doit être integré dans un SoC avec des perifs pour communiquer avec l'exterieur.
Bon ça tombe bien, il y a aussi des RTLs de SoC open-source dans mon lien.

Mais même avec un RTL de SoC c'est pas gagné ! Le RTL est une description hardware qui ne cible aucune techno
Pour cibler une techno, par exemple rêvons d'un 10nm chez TSMC, il faut générer un GDS à partir du RTL.
Un GDS c'est justement une description hardware pour une techno précise.
Pour cela on doit utiliser les Standard Cell Library du constructeur (ici TSMC) specifique à la techno qu'on vise. Or la license pour avoir le droit d'utiliser cette lib coute TRES CHER (et c'est pas opensource) et un run chez TSMC ça coute cher aussi .
De plus savoir passer du RTL au GDS c'est un metier.

On est donc bien au dela du fantasme quand on imagine prendre un RTL gratuit et puis pouf! .. Avoir un son CPU pas trop cher.

Vous parlez de backdoor aussi, mais attention il ne faut pas s'imaginer que avec un RTL opensource vous ne risquez pas d'avoir de backdoor.
Le fondeur chez qui vous faites fabriquer votre chip peut aussi ajouter des backdoors et bonne chance pour verifier ça .

Bref c'est un sujet super interessant, mais je suis limité en nombre de caractères

source: je travaille pour une entreprise fabless de semi-condicteur Française.
par Nicolas D., le Lundi 01 Juillet 2019 à 16h45  
par Un programmeur en Nouvelle-Aquitaine le Lundi 01 Juillet 2019 à 14h03
Pour être compris, il faut être concis... Mais c'est ce que je raconte dans le dossier architecture des processeurs . Et comme tu le soulignes il y a une bijection entre le code assembleur et le binaire compris par le CPU généré par cet assembleur (le programme cette fois-ci). Pour faciliter la compréhension, Autant identifier l'un à l'autre tant qu'on reste sur un focus général , c'est assez complexe comme ça .
par Un programmeur en Nouvelle-Aquitaine, le Lundi 01 Juillet 2019 à 14h03  
par Nicolas D. le Lundi 01 Juillet 2019 à 10h35
Pour envoyer des ordres au CPU, il faut les coder en binaire sous un langage nommé assembleur. C'est lui qui forme le jeu d'instruction (ISA en anglais)
Euh... Non !

Le langage du CPU est le langage (ou code) machine, des suites d'octets qui représentent les instructions et leur opérandes.
L'assembleur est un programme (qui permet de traduire en code machine des mnémoniques alphabétiques compréhensibles et mémorisables par un humain), et par abus de langage... le langage lui-même.

Exemples:
Z80A: mnémonique "assembleur": PUSH AF - code machine (nombre hexadécimal 8 bits): F5
68000: mnémonique "assembleur": MOVEQ #1,D0 - code machine (nombre hexadécimal 16 bits): 7001

Le programmeur utilise le langage assembleur pour écrire un fichier texte (programme) qui est ensuite "assemblé" (transformé en code machine, exécutable par le CPU) par l'assembleur.
Côté CPU, le code machine est transformé par une logique câblée en une suite d'opérations.
Dans le 1er exemple, le Z80A sait que tout code machine correspondant à l'octet (en binaire) 11xx0101 correspond à une instruction PUSH, et la valeur de xx (ici 11 en binaire) correspond au registre AF.
Dans le second exemple, le 68000 sait qu'un code du type: 0111xxx0nnnnnnnn est une instruction MOVEQ avec xxx le numéro du registre de donnée (0 à 7 en décimale pour D0 à D7), et nnnnnnnn l'opérande 8 bits à y charger.

Il y à 35 ans j'ai commencé à programmer (6800, 6502 et Z80A) en code machine car les assembleurs n'existaient pas encore ou étaient trop gros (la quantité de RAM disponible sur ces systèmes était de l'ordre du kilo-octet). Mais à l'époque, il était facile de retenir les 256 codes machines d'un CPU 8 bits !
par Un grammar nazi d'Occitanie, le Lundi 01 Juillet 2019 à 12h49  
[quote name='Nicolas D.']
À l'opposée, pour les CPU ARM, la confusion est totale entre le jeu d'instruction ARMv8a, qui est une norme d'encodage de l'assembleur fourni au CPU, de l'architecture Cortex-AXX, qui représente quant à lui l'agencement interne d'une puce en particulier.[/quote]
La confusion vient surtout de la phrase. « Entre le jeu d'instruction ARMv8a [...] et l'architecture Cortex-AXX, [...] quant à elle. » ? Quand on compare il doit y avoir et quelque part.
par Un ragoteur sans nom en Île-de-France, le Lundi 01 Juillet 2019 à 10h59  
Oui mais il (semble) bien y avoir une corrélation entre le jeu d'instruction ARM et l'architecture "Cortex", non ?