240 likes | 365 Views
This paper presents advancements in Open64 by leveraging an object-oriented architecture description language (ADL), specifically OpenDL. As embedded processors become increasingly complex, detailed and error-prone architecture descriptions pose challenges for compiler design. The proposed object-oriented approach reduces redundancy and improves maintainability. Additionally, the paper discusses various related works, including structural, behavioral, and mixed ADLs such as MIMOLA and LISA, emphasizing their strengths and weaknesses. Through experiments on the PowerPC 7447A, we demonstrate the effectiveness of our method.
E N D
Retarget Open64 with an Object-Oriented ADL Zhen Cao Tsinghua University
Introduction • expressive, concise and high-quality architecture description languages (ADLs) desired • embedded processors are growing complex • describing detailed architecture information for compilers are more and more complicated • ADL description is tedious and error-prone to maintain • redundancy, consistency • object-oriented ADL OpenDL • reduced redundancy
Related Work • Structural • MIMOLA (MSSQ) • HDL-like, as a netlist of register-transfer modules • Behavioral • nML (CHESS), ISDL (AVIV) • instruction-set level, no explicit pipeline • Mixed • MDes, Expression (Trimaran) • LISP-like, split description into instruction-set and structural • LISA (CoSy), RADL • C-like, extension works add semantics to structural behavior • ArchC (SystemC and C++) • storage-based consistency coverification • No object-oriented mechanism supported
OpenDL Specification • Register Description • Instruction Set • ABI • Architecture Parameters
Instruction Set Primitive Instruction
Instruction Set Compose Instuction Side-Effect Instuction
Inheritance Mechanisms • Instruction Amalgamation • Pattern Abstraction • Common Information Extraction
Instruction Amalgamation • instructions of a group perform much like each other except for routine behaviors • syntax form, i.e. add, add., addo, addo. • . form affects LT, GT, EQ, SO of CR0 • o form affects SO, OV of XER • define a class to describe the four syntax forms • describe primitive instructions • apply syntax form class to primitive instruction to automatically generate instructions with syntax forms
Instruction Amalgamation Syntax Class Syntax Application
Pattern Abstraction • instructions of the same operation type usually form a decorator pattern • add, addc, adde, addi, addic, addis • carrying, extended, immediate • decorators apply to mul, and, etc • abstract decorators as semantic classes • designate decorators to primitive instructions to generate decorated instructions
Pattern Abstraction Decorator Classes Decorator Application
Common Information Extraction • instructions can be sorted into a few classes • integer and float-point arithmetic, bit-operation, memory access, SIMD, data transfer between gp and control registers • and, or, nand, nor, xor • extract common information out as operation classes • instructions inherit operation classes
Common Information Extraction Operation Class Operation Application
Experiments • Apple iBook G4 • PowerPC 7447A 1.33GHz • 1GB Memory • Ubuntu 8.04 • kernel version 2.6.24-23-powerpc • GCC 4.1.3 • Open64 4.2