• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 116
  • 33
  • 28
  • 7
  • 2
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • Tagged with
  • 282
  • 175
  • 115
  • 98
  • 93
  • 68
  • 44
  • 40
  • 40
  • 37
  • 37
  • 36
  • 35
  • 34
  • 31
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.

Semi-automatic protocol implementation using an Estelle-C compiler, LAPB and RTS protocols as examples

Lu, Jing January 1990 (has links)
Formal Description Techniques allow for the use of automated tools during the specification and development of communication protocols. Estelle is a standardized formal description technique developed by ISO to remove ambiguities in the specification of communication protocols and services. The UBC Estelle-C compiler automates the implementation of protocols by producing an executable C implementation directly from its Estelle specification. In this thesis, we investigate the automated protocol implementation methodology using the Estelle-C compiler. First, we describe the improvements made to the compiler to support the latest version of Estelle. Then, we present and discuss the semiautomated implementations of the LAPB protocol in the CCITT X.25 Recommendation and the RTS protocol in the CCITT X.400 MHS series using this compiler. Finally, we compare the automatic and manual protocol implementations of LAPB and RTS protocols in terms of functional coverage, development time, code size, and performance measure. The results strongly indicate the overall advantages of automatic protocol implementation method over the manual approach. / Science, Faculty of / Computer Science, Department of / Graduate

Automated detection of structured coarse-grained parallelism in sequential legacy applications

Edler Von Koch, Tobias Joseph Kastulus January 2014 (has links)
The efficient execution of sequential legacy applications on modern, parallel computer architectures is one of today’s most pressing problems. Automatic parallelization has been investigated as a potential solution for several decades but its success generally remains restricted to small niches of regular, array-based applications. This thesis investigates two techniques that have the potential to overcome these limitations. Beginning at the lowest level of abstraction, the binary executable, it presents a study of the limits of Dynamic Binary Parallelization (Dbp), a recently proposed technique that takes advantage of an underlying multicore host to transparently parallelize a sequential binary executable. While still in its infancy, Dbp has received broad interest within the research community. This thesis seeks to gain an understanding of the factors contributing to the limits of Dbp and the costs and overheads of its implementation. An extensive evaluation using a parameterizable Dbp system targeting a Cmp with light-weight architectural Tls support is presented. The results show that there is room for a significant reduction of up to 54% in the number of instructions on the critical paths of legacy Spec Cpu2006 benchmarks, but that it is much harder to translate these savings into actual performance improvements, with a realistic hardware-supported implementation achieving a speedup of 1.09 on average. While automatically parallelizing compilers have traditionally focused on data parallelism, additional parallelism exists in a plethora of other shapes such as task farms, divide & conquer, map/reduce and many more. These algorithmic skeletons, i.e. high-level abstractions for commonly used patterns of parallel computation, differ substantially from data parallel loops. Unfortunately, algorithmic skeletons are largely informal programming abstractions and are lacking a formal characterization in terms of established compiler concepts. This thesis develops compiler-friendly characterizations of popular algorithmic skeletons using a novel notion of commutativity based on liveness. A hybrid static/dynamic analysis framework for the context-sensitive detection of skeletons in legacy code that overcomes limitations of static analysis by complementing it with profiling information is described. A proof-of-concept implementation of this framework in the Llvm compiler infrastructure is evaluated against Spec Cpu2006 benchmarks for the detection of a typical skeleton. The results illustrate that skeletons are often context-sensitive in nature. Like the two approaches presented in this thesis, many dynamic parallelization techniques exploit the fact that some statically detected data and control flow dependences do not manifest themselves in every possible program execution (may-dependences) but occur only infrequently, e.g. for some corner cases, or not at all for any legal program input. While the effectiveness of dynamic parallelization techniques critically depends on the absence of such dependences, not much is known about their nature. This thesis presents an empirical analysis and characterization of the variability of both data dependences and control flow across program runs. The cBench benchmark suite is run with 100 randomly chosen input data sets to generate whole-program control and data flow graphs (Cdfgs) for each run, which are then compared to obtain a measure of the variance in the observed control and data flow. The results show that, on average, the cumulative profile information gathered with at least 55, and up to 100, different input data sets is needed to achieve full coverage of the data flow observed across all runs. For control flow, the figure stands at 46 and 100 data sets, respectively. This suggests that profile-guided parallelization needs to be applied with utmost care, as misclassification of sequential loops as parallel was observed even when up to 94 input data sets are used.

Design automation of a machine-independent code generator

Clayton, Peter Graham 22 January 2013 (has links)
As both computer languages and architectures continue to proliferate, there is a continuing need for new compilers. Researchers have attempted to ease the work of producing compilers by developing methods to automate compiler writing. While much work has been done (and considerable success achieved) in writing parsers which can handle a variety of source languages (using mainly table-driven analysis methods), less progress has been made in formalizing the code generation end of the compiler. Nevertheless, some of the more recent publications in code generation stress portability or retargetability of the resulting compiler. A number of code generator synthesisers have been developed, some of which produce code that can be compared in quality with that produced by a conventional code generator. However, because of the complexity of generalizing the mapping from source language to target machine, and the need for efficiency of various kinds, code generator synthesisers are large, complicated programs. Consequently, the person who develops a code generator using one of these tools invariably needs to be a code generation specialist himself. Many compilers follow a pattern of having a front end which generates intermediate code, and a back end which converts intermediate code to machine code. The intermediate code is effectively machine independent, or can be designed that way. With these points in mind, we have set out to write a system of programs which -- 1. will allow the generation of such a back end in a reasonably short time, for a general intermediate code, and for a general machine code, and -- 2. can be used by anyone who has a sound knowledge of the target machine's architecture and associated assembler language, but is not necessarily a specialist compiler writer. The system consists of a series of friendly, interactive programs by means of which the user sets up tables defining the architecture and assembly level instructions for the target machine, and the code templates onto which intermediate codes produced by a parser have been mapped. A general notation has been developed to represent machine instructions using the same format as the target assembler. Thus the code generator writer is able to write code sequences to perform the effects of the intermediate codes, using assembly mnemonics familiar to him. The resultant table-driven code generator simply replaces a sequence of intermediate codes by their respective code templates, relocating them in memory and filling in addresses known only at code-generation time. This thesis describes the use and implementation details of this generalized code generation system. As an example, the implementation of a code generator for a CLANG [23] parser on an 8080 processor is described. The discussion also includes guide-lines on how to implement a loader and associated run-time routines for use in executing the object code. The results of a number of bench-marks have shown, as expected, that code produced by a code generator developed in this manner is larger and slower than that from a special purpose optimizing code generator, but is still several times faster than interpreting the intermediate code. The major benefit to be gained from using this system lies in the shorter development time by a less skilled person. / KMBT_223 / Adobe Acrobat 9.53 Paper Capture Plug-in

Τεχνικές μεταγλωττιστών για εφαρμογές πολυμέσων

Σπουρλής, Γεώργιος 19 April 2010 (has links)
Στη σημερινή εποχή οι μεταγλωττιστές κατέχουν έναν σημαντικό ρόλο στην υψηλή απόδοση των υπολογιστικών συστημάτων είτε επιτραπέζιων, είτε εξυπηρετητών, είτε ενσωματωμένων. Ο λόγος είναι ότι στη σημερινή εποχή όλες σχεδόν οι εφαρμογές γράφονται σε γλώσσες υψηλού επιπέδου και συνεπώς απαιτείται μεταγλώττιση ώστε τα προγράμματα να τρέξουν σε γλωσσά μηχανής. Η ραγδαία όμως αύξηση της απόδοσης των υπολογιστικών συστημάτων όμως έχει δημιουργήσει την απαίτηση για αποδοτικές εφαρμογές. Έτσι ποιότητα του παραγομένου κώδικα που προκύπτει είναι κρίσιμη για την ορθή και γρήγορη εκτέλεση τους για αυτό το λόγω γίνεται σημαντική ερευνά στη συγγραφή μεταγλωττιστών που θα ικανοποιεί τις παραπάνω απαιτήσεις. Αν και σήμερα υπάρχει μέλλον στην ανάπτυξη των μεταγλωττιστών υπάρχει ζήτημα για τα ενσωματωμένα συστήματα. Λόγω του ότι πρέπει να είναι έχουν χαμηλό κόστος, χαμηλή κατανάλωση ισχύος χρησιμοποιούν υποτυπώδεις μεταγλωττιστές. Επειδή όμως τα ενσωματωμένα συστήματα είναι μεγάλος κλάδος των υπολογιστικών συστημάτων με εφαρμογές σε πληθώρα θεμάτων πρέπει οι εφαρμογές αυτές να είναι σωστές και να «τρέχουν» γρήγορα. Αυτό έχει ωθήσει τους προγραμματιστές στην μελέτη των compilers και των μετασχηματισμών που κάνουν και έχει δώσει μια νέα κατεύθυνση στη βελτιστοποίηση προγραμμάτων με το χέρι με χρήση τεχνικών μεταγλωττιστών αλλά και με υψηλοτέρου επιπέδου βελτιστοποιήσεις που δεν γίνονται ακόμα από μεταγλωττιστές. Σκοπός αυτής της εργασίας είναι η μελέτη και βελτιστοποίηση της εφαρμογής για πολυμέσα motion estimation by 4 με στόχο την αύξηση της ταχύτητας εκτέλεσης σε ένα πλήθος αρχιτεκτονικών διατάξεων λαμβάνοντας υπόψη το πλήθος των πράξεων και την ιεραρχία μνήμης. Η εξομοίωση των βελτιωμένων προγραμμάτων έδειξε ότι μπορούμε να επιτύχουμε σημαντική μείωση του χρόνου εκτέλεσης ακόμα και σε αρχιτεκτονικές που δεν αξιοποιούν στο μέγιστο δυνατό τις απαιτήσεις που έχουν αυτά. / In our days compilers play a crucial role in the performance of computer systems (desktop PCs, servers, embedded systems). The reason is that almost every application is created in high level programming languages and compilation is required so that the program will eventually run in machine language. However the rapid increase of computer systems’ performance demands more efficient applications. The quality of the code that is created is critical for fast and correct execution of the applications. For this reason much research is done in the area of creating compilers that fulfill the above requirements. Although there is much future in the development of compilers, important issues arise about the embedded systems. Such systems should be characterized by low cost and low power. For this reason the compilers used are quite simple. However, the embedded systems are a very important branch of computer systems with a variety of applications, which should be executed fast and correctly. These requirements are a motivation for the programmers to study the compilers and the transformations they use and lead to program optimization “by hand” using compiler techniques, as well as higher level optimization techniques that are not used by compilers yet. The purpose of this thesis is the study and optimization of the multimedia application “motion estimation by 4”. Our main goal is to increase the execution speed in a variety of different architectural designs taking into account the amount of computation and the memory hierarchy. The simulation of the improved programs proved that we can accomplish important reduction of the execution time even in architectures that are not suitable for these specific programs.

Μελέτη των διερμηνευτών (scripting languages) που χρησιμοποιούνται στο παγκόσμιο ιστό, το διαδίκτυο, την εικονική πραγματικότητα και σε σχετικές τεχνολογίες και ανάπτυξη πιλοτικού συστήματος δικτυοκεντρικού διερμηνευτή

Ψιστάκης, Ιωσήφ 08 February 2010 (has links)
Τα σύγχρονα υπολογιστικά περιβάλλοντα χαρακτηρίζονται από έντονη χρήση διερμηνευτών (scripting languages). Μεταξύ άλλων, διερμηνευτές χρησιμοποιούνται για τη διαχείριση συστήματων (bash, powershell, msi), την αυτοματοποίηση διαδικασιών σε εφαρμογές (Microsoft Office, Alias Maya, Sonar, AutoCad), τη δημιουργία ψηφιακών παιχνιδιών (UnrealScript, LUA) αλλά και για την ανάπτυξη εφαρμογών για τον Παγκόσμιο Ιστό. Ειδικά για τη περίπτωση του Διαδικτύου, φαίνεται ότι η εξέλιξη του Παγκόσμιου Ιστού είναι συνυφασμένη με την παράλληλη εξέλιξη των διερμηνευτών: νέες γλώσσες δημιουργούνται ώστε να υποστηρίξουν νέες τεχνολογίες. Σήμερα, πολλές ετερογενείς τεχνολογίες αλληλεπιδρούν ώστε εξυπηρετητής και φυλλομετρητής να παράγουν και να παρουσιάσουν διαδραστικό περιεχόμενο στο χρήστη. Από τη μεριά του εξυπηρετητή, χρησιμοποιούνται γλώσσες όπως οι Php, Jsp και Asp.Net. Το περιεχόμενο που παράγεται παρουσιάζεται στο χρήστη με τη χρήση γλωσσών όπως οι html, Javascript και Actionscript. Οι διερμηνευτές γίνονται όλο και πιο διαδεδομένοι, καθώς προσφέρουν ευελιξία στην ανάπτυξη του κώδικα, ανεξαρτησία από την υπολογιστική αρχιτεκτονική και μειωμένους χρόνους ανάπτυξης, αφού δεν απαιτείται μεταγλώττιση ενώ το συντακτικό είναι απλο¬ποιημένο. Για τη βελτίωση της απόδοσης, οι σύγχρονοι διερμηνευτές χρησιμοποιούν Just-in-time compilation τεχνικές: ουσιαστικά μετατρέπουν το πηγαίο κώδικα σε ενδιάμεσο κώδικα, άμεσα εκτελέσιμο από μια μηχανή εκτέλεσης (ιδεατή μηχανή). Αυτό δυσχεραίνει περαιτέρω το διαχωρισμό μεταξύ διερμηνευτή και μεταγλωττιστή. Λόγω των παραπάνω χαρακτηριστικών και κυρίως λόγω της ανεξαρτησίας τους από την αρχιτεκτονική, οι διερμηνευτές αποτελούν τη βάση για τη συντριπτική πλειοψηφία των Εφαρμογών Ιστού. Εντούτοις, καθώς η πολυπλοκότητα των διαδικτυακών εφαρμογών αυξάνεται, η χρήση των υπαρχόντων τεχνολογιών επιβραδύνει σημαντικά την ανάπτυξη: Για μια απλή δυναμική ιστοσελίδα απαιτείται η συγγραφή κώδικα σε τουλάχιστον τρεις γλώσσες: Κάθε στοιχείο της εφαρμογής (βάση δεδομένων, εξυπηρετητής, πελάτης) προγραμματίζεται σε διαφορετικό γλωσσικό περιβάλλον. Ο προγραμματιστής καλείται να διαχειριστεί την επικοινωνία και αλληλεπίδραση των ετερογενών στοιχείων αυτών και να επιλύσει τυχόν ασυμβατότητες. Ένα μεγάλο μέρος του χρόνου ανάπτυξης μιας εφαρμογής καταναλώνεται στη διαχείριση αυτού του ετερογενούς συστήματος. Με την άφιξη νέων τεχνολογιών, όπως για παράδειγμα οι Ajax, Silverlight, JavaFX, η διαχείριση των εγγενών προβλημάτων του συστήματος αυτού δυσχεραίνεται ακόμη περισσότερο. Στα πλαίσια της εργασίας αυτής διερευνώνται οι κυριότερες σύγχρονες τεχνολογίες διερμηνευτών για ανάπτυξη εφαρμογών, με έμφαση στις τεχνολογίες Ιστού. Κάθε γλώσσα αναλύεται ξεχωριστά και σχολιάζονται οι ιδιαιτερότητες και τα ειδικά χαρακτηριστικά της. Παράλληλα εντοπίζονται τα εγγενή προβλήματα ασυμβατότητας που συναντώνται στο υπάρχον μοντέλο ανάπτυξης και παρουσιάζεται ένα εναλλακτικό, ενοποιημένο μοντέλο ανάπτυξης διαδικτυακών εφαρμογών, το οποίο ομαδοποιεί και απλοποιεί τις προγραμματιστικές διαδικασίες των συστημάτων πελάτη και εξυπηρετητή. / Scripting languages find many applications in modern computing environments. Scripts are used in various scenarios, including system administration (bash, powershell, msi), job automation (Microsoft Office, Alias Maya, Sonar, AutoCad), logic programming in computer entertainment and of course in Internet Applications. Internet technologies are the primary example application of scripts (interpreters in general): a connection between scripts and the development of the World Wide Web can be observed: new scripting systems arise to support newly developed technologies. In modern internet applications, different technologies co-exist and interact so that the server and the client can present interactive content to the end user. On the server side, technologies like Php, Jsp and As[.Net are used. The resulting content is presented on the client side with technologies such as html/xml, Javascript, Flex and Actionscript. Scripting Languages (interpreters) are becoming increasingly popular, as they offer versatility, platform-independence and reduced development times, since they feature a simplified syntax and they do not require complex compilation procedures. To increase performance, modern Scripting systems feature Just-In-Time compilation techniques, effectively creating a compiled version of their input source code. This version of the code can be easily executed by the system’s Virtual Machine (Execution Engine). Such techniques blur the borders between Compilers and Interpreters. The features detailed above make interpreters the ideal solution for web application development, mainly because they are inherently cross-platform. Most of the available web-technologies expose an interpreted language system. However, as the complexity in modern web-applications and related technologies increases, current scripting systems are becoming a bottleneck in the development process: To develop a proper dynamic web page, the programmer will be required to use at least three different languages: A language for accessing the data base (sql), a language to program the server side of the application (Php, Jsp, Asp) and a set of languages to present content to the end user (javascript). It is up to the programmer to orchestrate the various scripts and manage any incompatibilities arising, when using those independent systems. This hampers the development process, as extra effort is taken to manage the programming environment rather than actually develop the program. With new technologies, like Silverlight, Ajax and Flex arising, managing inherent incompatibilities becomes even more difficult. To tackle the increased development complexity, a new web application development paradigm is explored and the features of the corresponding language are detailed, as is a simple implementation scheme. A study of available mainstream scripting languages, with a focus in Web development, is also presented. Each language is presented with a description of its key features and syntax and a comparison with similar development systems.

Χρονοδρομολόγηση μεταφορών δεδομένων και εντολών για μεγαλύτερη ταχύτητα εφαρμογών σάρωσης πινάκων

Βασιλείου, Χρυσάνθη 07 June 2010 (has links)
Με την εξέλιξη της τεχνολογίας, ο κύριος στόχος των υπολογιστικών συστημάτων, επιτραπέζιων, εξυπηρετητών και ενσωματωμένων είναι η υψηλή απόδοση. Όμως, το σύνολο σχεδόν των εφαρμογών στις μέρες μας είναι γραμμένο σε κάποια γλώσσα υψηλού επιπέδου, με αποτέλεσμα να απαιτείται μεταγλώττιση ώστε να μεταφραστούν σε γλώσσα μηχανής και για να μπορέσουν στη συνέχεια να εκτελεστούν σε κάποιον επεξεργαστή. Η ποιότητα του κώδικα που παράγεται είναι κρίσιμος παράγοντας για την ορθή και γρήγορη εκτέλεσή του. Επομένως, η χρήση ενός μεταγλωττιστή που ικανοποιεί τις παραπάνω απαιτήσεις είναι εξαιρετικά σημαντική. Αν και η ανάπτυξη όλο και πιο αποδοτικών μεταγλωττιστών είναι γεγονός, δεν είναι δυνατό να χρησιμοποιηθούν από όλα τα υπολογιστικά συστήματα. Για παράδειγμα, τα ενσωματωμένα συστήματα, που αποτελούν μεγάλο κλάδο των υπολογιστικών συστημάτων και χρησιμοποιούνται σε πληθώρα θεμάτων, λόγω της απαίτησης τους για χαμηλό κόστος και χαμηλή κατανάλωση ισχύος χρησιμοποιούν υποτυπώδεις μεταγλωττιστές. Παρόλα αυτά η απαίτηση για υψηλή απόδοση παραμένει. Έτσι, έχει δοθεί ιδιαίτερη ώθηση στη μελέτη των μεταγλωττιστών και των τεχνικών βελτιστοποίησης προγραμμάτων που χρησιμοποιούν. Αυτό οδήγησε στη χρήση των τεχνικών μεταγλωττιστών από τους προγραμματιστές με στόχο την επίτευξη βελτιστοποίησης στο υψηλότερο επίπεδο, κάτι που είναι ιδιαίτερα χρήσιμο για τα ενσωματωμένα συστήματα όπου δεν χρησιμοποιούνται ακριβοί μεταγλωττιστές. Σκοπός της εργασίας είναι η μελέτη και βελτιστοποίηση μιας εφαρμογής σάρωσης πίνακα με στόχο την αύξηση της ταχύτητας εκτέλεσης και τη μείωση των μετακινήσεων στη μνήμη σε διαφορετικές αρχιτεκτονικές. / As technology changes, the main goal of every computer system (PCs, servers, embedded systems) is high performance. Nowadays, the majority of applications is written in high level languages and compiling is appropriate for their execution in a processor. The quality of binary code produced by a compiler is a critical factor for its correct and fast execution. So, it is extremely significant to use compilers that fulfill the requirements above. Even though the production of compilers which produce high quality binary code is a fact, they cannot be used by every computer system. For instance, embedded systems which are a big part of computer systems and are used in a wide range of applications, use simple compilers. This is because embedded systems are of low cost and low power. Nevertheless, the requirement for high performance remains. As a result, research moved towards compilers’ structure and optimization methods that are used by them. This lead to the use of compilers’ optimization methods by programmers in order to achieve high level optimization in their codes. This is very useful for embedded systems where simple compilers are used and the quality of produced code is not the desired. The aim of this work is the optimization of an application which scans a matrix (filter image) in order to achieve better performance which contains reducing memory accesses and increasing the execution time.

Τεχνικές μεταγλωττιστών για βελτιστοποίηση ταχύτητας ενσωματωμένων υπολογιστών

Γκίκα, Ζαχαρούλα 07 June 2010 (has links)
Στη σημερινή εποχή, η πλειοψηφία των εφαρμογών που προορίζονται για επιτραπέζια υπολογιστικά συστήματα, ενσωματωμένα συστήματα και εξυπηρετητές, υλοποιείται χρησιμοποιώντας κάποια γλώσσα υψηλού επιπέδου. Το γεγονός αυτό αναδεικνύει την τεράστια σημασία των μεταγλωττιστών, οι οποίοι μεταφράζουν τον κώδικα υψηλού επιπέδου σε γλώσσα μηχανής. Η γνώση της τεχνολογίας των μεταγλωττιστών αποτελεί σημαντικό εφόδιο στην προσπάθεια αύξησης της απόδοσης ενός υπολογιστικού συστήματος. Σκοπός της παρούσας διπλωματικής εργασίας είναι η βελτιστοποίηση δύο γνωστών εφαρμογών, του μετασχηματισμού Gauss και του αλγορίθμου πολλαπλασιασμού μήτρας Toeplitz με διάνυσμα. Για τη βελτιστοποίηση χρησιμοποιήθηκε πληθώρα τεχνικών που ενσωματώνονται σε διάφορους μεταγλωττιστές, καθώς επίσης και μέθοδοι που οι τρέχοντες μεταγλωττιστές δεν μπορούν ακόμα να εφαρμόσουν. Για την αξιολόγηση των πειραματικών αποτελεσμάτων χρησιμοποιήθηκε το εργαλείο εξομοίωσης Simplescalar και πραγματοποιήθηκε σύγκριση της εκτέλεσης των αρχικών με τις βελτιστοποιημένες εκδόσεις των εφαρμογών. Η επιτάχυνση που επετεύχθη είναι σημαντική, έως και 55%. / Nowadays, the majority of applications designed for desktop and embedded systems and servers is implemented using a high level programming language. This fact proves the huge importance of compilers, which translate high level language into machine language. The knowledge of compiler technology is a useful tool for increasing efficiency of a computer system. The purpose of this Diploma Thesis is to optimize two well-known applications, the Gauss elimination algorithm and the algorithm for multiplying a Toeplitz matrix and a vector. In order to optimize these two algorithms, a variety of techniques present in many compilers was utilized, as well as techniques that current compilers cannot yet apply. For the evaluation of our technique we used Simplescalar simulator and we compared the results between the unoptimized and the optimized versions of the algorithms. The speedup achieved was very significant, up to 55%.

Register allocation and spilling using the expected distance heuristic

Burroughs, Ivan Neil 12 April 2016 (has links)
The primary goal of the register allocation phase in a compiler is to minimize register spills to memory. Spills, in the form of store and load instructions, affect execution time as the processor must wait for the slower memory system to respond. Deciding which registers to spill can benefit from execution frequency information yet when this information is available it is not fully utilized by modern register allocators. We present a register allocator that fully exploits profiling information to mini- mize the runtime costs of spill instructions. We use the Furthest Next Use heuristic, informed by branch probability information to decide which virtual register to spill when required. We extend this heuristic, which under the right conditions can lead to the minimum number of spills, to the control flow graph by computing Expected Distance to next use. The furthest next use heuristic, when applied to the control flow graph, only par- tially determines the best placement of spill instructions. We present an algorithm for optimizing spill instruction placement in the graph that uses block frequency infor- mation to minimize execution costs. Our algorithm quickly finds the best placements for spill instructions using a novel method for solving placement problems. We evaluate our allocator using both static and dynamic profiling information for the SPEC CINT2000 benchmark and compare it to the LLVM allocator. Targeting the ARMv7 architecture, we find average reductions in numbers of store and load instructions of 36% and 50%, respectively, using static profiling and 52% and 52% using dynamic profiling. We have also seen an overall improvement in benchmark speed. / Graduate

VPI PROLOG compiler project report

Deighan, John 26 January 2010 (has links)
see document / Master of Science

Design and Analysis of an Instrumenting Profiler for Webassembly

Gifford, Chandler 01 June 2019 (has links)
This thesis presents the design, implementation, and analysis of WasmProf, an instrumenting profiler for WebAssembly programs. WebAssembly is a compiled language designed for use on the web that, at the time of this writing, is still being actively developed. At present, performance analysis for WebAssembly programs mostly consists of browsers’ built-in sampling profilers. These profilers work well in many cases but only give a statistical estimation of the distribution of function calls and are, therefore, not well-suited for more fine-grained analysis. The WasmProf instrumenting profiler fills this analysis gap. WasmProf is capable of tracking the number of calls made and the time spent in every function called within the profiled program. Analysis of WasmProf demonstrates performance equivalent to or slightly better than similar tools that perform instrumentation and dynamic analysis on WebAssembly programs.

Page generated in 0.0927 seconds