La fonctionnalité de recherche est en construction.
La fonctionnalité de recherche est en construction.

The original paper is in English. Non-English content has been machine-translated and may contain typographical errors or mistranslations. ex. Some numerals are expressed as "XNUMX".
Copyrights notice

The original paper is in English. Non-English content has been machine-translated and may contain typographical errors or mistranslations. Copyrights notice

A Verification Framework for Assembly Programs Under Relaxed Memory Model Using SMT Solver Un cadre de vérification pour les programmes d'assemblage sous un modèle de mémoire détendu à l'aide du solveur SMT

Pattaravut MALEEHUAN, Yuki CHIBA, Toshiaki AOKI

  • Vues en texte intégral

    0

  • Citer

Résumé:

Dans les multiprocesseurs, des modèles de mémoire sont introduits pour décrire les exécutions de programmes entre processeurs. Les modèles de mémoire assouplis, qui assouplissent l'ordre des exécutions, sont utilisés dans la plupart des processeurs modernes, tels que ARM et POWER. Étant donné qu'un modèle de mémoire assoupli pourrait modifier la sémantique du programme, les exécutions des programmes pourraient ne pas être les mêmes que nos attentes, qui devraient préserver l'exactitude du programme. En plus des modèles de mémoire assouplis, la manière d'exécuter une instruction est décrite par une sémantique d'instruction, qui varie selon les architectures de processeur. Traiter la sémantique des instructions parmi une variété de programmes assembleur est un défi pour la vérification des programmes. Ainsi, cet article propose un moyen de vérifier une variété de programmes assembleurs exécutés sous un modèle de mémoire détendu. La variété des programmes d'assemblage peut être résumée comme la manière d'exécuter les programmes en introduisant une structure opérationnelle. En outre, il existe des cadres existants pour modéliser des modèles de mémoire détendus, qui peuvent réaliser des exécutions de programme à vérifier avec une propriété de programme. Notre travail adopte un solveur SMT pour révéler automatiquement les exécutions du programme sous un modèle de mémoire et vérifier si les exécutions violent ou non la propriété du programme. S'il y a une exécution à partir du solveur, l'exactitude du programme n'est pas préservée dans le modèle de mémoire assoupli. Pour vérifier les programmes, un outil expérimental a été développé pour coder les programmes donnés pour un modèle de mémoire dans une formule du premier ordre qui viole l'exactitude du programme. L'outil adopte un cadre de modélisation pour coder les programmes dans une formule pour le solveur SMT. Le solveur trouve alors automatiquement une valorisation qui satisfait la formule. Dans nos expériences, deux méthodes de codage ont été implémentées sur la base de deux frameworks de modélisation. Les valorisations résultantes du solveur peuvent être considérées comme les bugs survenus dans les programmes originaux.

Publication
IEICE TRANSACTIONS on Information Vol.E101-D No.12 pp.3038-3058
Date de publication
2018/12/01
Publicisé
2018/09/12
ISSN en ligne
1745-1361
DOI
10.1587/transinf.2018EDP7099
Type de manuscrit
PAPER
Catégories
Système logiciel

Auteurs

Pattaravut MALEEHUAN
  Japan Advanced Institute of Science and Technology (JAIST)
Yuki CHIBA
  DENSO Corporation
Toshiaki AOKI
  Japan Advanced Institute of Science and Technology (JAIST)

Mots-clés

Table des matières