A binary decoder is a common component of software development tools such as instruction set simulators, disassemblers and debuggers. The efficiency of the decoder can have a significant impact on the efficiency of these software tools. Automated synthesis of efficient software tool development frameworks targeting the rapidly growing field of application-specific processor design. This paper describes a decoder synthesis algorithm that translates a simple instruction pattern specification into efficient binary decoders in C under given memory constraints. The algorithm constructs a decision tree with carefully chosen decoding primitives and cost models. As demonstrated through two case studies, the synthesized decoders achieve efficiency comparable to hand-coded decoders with ensured correctness. The algorithm has no limitation on the input instruction patterns and it requires only the least amount of knowledge about the instruction encoding. Therefore it can be used with any machine description scheme containing instruction encoding information.
[1]
G. Braun,et al.
A universal technique for fast and flexible instruction-set architecture simulation
,
2002,
Proceedings 2002 Design Automation Conference (IEEE Cat. No.02CH37324).
[2]
Markus Freericks,et al.
Describing instruction set processors using nML
,
1995,
Proceedings the European Design and Test Conference. ED&TC 1995.
[3]
S. Devadas,et al.
ISDL: An Instruction Set Description Language For Retargetability
,
1997,
Proceedings of the 34th Design Automation Conference.
[4]
Sreerama K. Murthy,et al.
Automatic Construction of Decision Trees from Data: A Multi-Disciplinary Survey
,
1998,
Data Mining and Knowledge Discovery.
[5]
Thomas M. Cover,et al.
Elements of Information Theory
,
2005
.
[6]
Henrik Theiling.
Generating Decision Trees for Decoding Binaries
,
2001
.