Signal flow graphs with dataflow semantics have been used in signal processing system simulation, algorithm development, and real-time system design. Dataflow semantics implicitly expose function parallelism by imposi...
详细信息
Signal flow graphs with dataflow semantics have been used in signal processing system simulation, algorithm development, and real-time system design. Dataflow semantics implicitly expose function parallelism by imposing only a partial ordering constraint on the execution of functions. One particular form of dataflow called synchronous dataflow (SDF) has been quite popular in programming environments for digital signal processing (DSP) since it has strong formal properties and is ideally suited for expressing multirate DSP algorithms. However, SDF and other dataflow models use first-in first-out (FIFO) queues on the communication channels and are thus ideally suited only for one-dimensional (1-D) signal processing algorithms. While multidimensional systems can also be expressed by collapsing arrays into 1-D streams, such modeling is often awkward and can obscure potential data parallelism that might be present. SDF can be generalized to multiple dimensions;this model is called multidimensional synchronous dataflow (MDSDF). This paper presents MDSDF and shows how MDSDF can be efficiently used to model a variety of multidimensional DSP systems, as well as other types of systems that are not modeled elegantly in SDF. However, MDSDF generalizes the FIFO queues used in SDF to arrays and, thus, is capable only of expressing systems sampled on rectangular lattices. This paper also presents a generalization of MDSDF that is capable of handling arbitrary sampling lattices and lattice-changing operations such as nonrectangular decimation and interpolation. An example of a practical system is given to show the usefulness of this model. The key challenge in generalizing the MDSDF model is preserving static schedulability, which eliminates the overhead associated with dynamic scheduling, and preserving a model where data parallelism, as well as functional parallelism, is fully explicit.
cdb is a simple, source-level debugger for ANSI/ISO C programs compiled by lcc, a retargetable C compiler. cdb Is completely independent of its target architecture. This independence is achieved by embedding a small a...
详细信息
cdb is a simple, source-level debugger for ANSI/ISO C programs compiled by lcc, a retargetable C compiler. cdb Is completely independent of its target architecture. This independence is achieved by embedding a small amount of itself - a 'nub' - in the program to be debugged and by having the compiler emit machine-independent symbol-table data and related code. This paper describes the design of a nub interface for debugging, a target-independent implementation of this interface for cdb, and the implementation of cdb itself. When compared to platform-specific debuggers, cdb's implementation is minuscule: the nub, debugger, and associated communications routines take about 1500 lines of C, and fewer than 600 lines were added to Ice's front end to emit symbol tables and breakpoint hooks. All this code is machine independent.
Modula-2 was designed in 1979 by Prof. Niklaus Wirth as a successor to Pascal. It provides similar facilities for the description of algorithms and data structures, but differs radically from Pascal in allowing the co...
详细信息
Modula-2 was designed in 1979 by Prof. Niklaus Wirth as a successor to Pascal. It provides similar facilities for the description of algorithms and data structures, but differs radically from Pascal in allowing the composition of programs from separately compiled modules in a carefully controlled way. This paper recounts some experiences with implementing the languages for a variety of computers, and describes a collection of tools (mostly written in Modula-2) that provides an extensive program development environment for the language. In particular, a general set of run time libraries is described together with utilities for consistent compilation, symbolic debugging and run time profiling. The paper concludes with some observations on the language formed on the basis of these experiences.
A new parallel parsing algorithm for block structured languages, capable of parsing incrementally also, is presented. The parser is for LR grammars. A shared memory multiprocessor model is assumed. We associate proces...
详细信息
A new parallel parsing algorithm for block structured languages, capable of parsing incrementally also, is presented. The parser is for LR grammars. A shared memory multiprocessor model is assumed. We associate processors to parse corrections independently with minimum reparsing. A new compatibility condition is used by the associated processors to terminate parsing, and prevent redoing the work of other processors. We give an efficient way of assembling the final parse tree from the individual parses. Our compatibility condition is simple and it can be computed at the parser construction time itself. Further, the compatibility condition can be tested while parsing, in constant time. The parser can be integrated into the editor. We give an estimate for speedup by our parallel parsing and parallel incremental parsing methods. We have obtained considerable speedups in simulation studies of our algorithm.
Ad hoc programming methods do not work in the development of bid software systems. The problems faced in developing large software include: 1. starting from fuzzy and incomplete requirements, 2. enforcing a methodo...
详细信息
Ad hoc programming methods do not work in the development of bid software systems. The problems faced in developing large software include: 1. starting from fuzzy and incomplete requirements, 2. enforcing a methodology on the developers, 3. coordinating multiple programmers and managers, 4. achieving desired reliability and performance in the network, 5. managing a multitude of resources in a meaningful way, and 6. completing the system within a limited time frame. Some of the trends in requirement specification, life-cycle modeling, programming environments, design tools, and other software engineering areas are examined for tackling these development problems. Several phase-independent and phase-dependent techniques are suggested for programming in the large system. It is demonstrated how research in automatic programming, knowledge-based systems, metrics, and programming environments can make a great difference in the ability to develop large systems.
This article describes the analysis of the electromagnetic absorption and scattering properties of a planar multilayered structure, representing simplified models of human tissues. A step-by-step approach for the impl...
详细信息
This article describes the analysis of the electromagnetic absorption and scattering properties of a planar multilayered structure, representing simplified models of human tissues. A step-by-step approach for the implementation of a planar multilayered code using the LabVIEW environment is presented. The effects of the fat layer on the specific absorption rate (SAR) deposition in two models of human tissues were considered. The first model was a three-layered (skin-fat-muscle) tissue model. The second model was a human-head model, comprised of seven different tissues of skin, fat, muscle, bone, dura, cerebrospinal fluid (CSF), and brain. The simulation results were evaluated, and showed the fat-layer effects on the specific absorption rate deposition in human tissues. The graphical nature of the LabVIEW programming environment makes it very easy to create a sophisticated application in a minimum amount of time, especially when compared to designing graphical user interfaces in a low-level programming language.
The authors describe the hardware and software of a system for prototyping digital-signal-processing applications by using commercially available digital-signal processors linked to form multiprocessors. The graphical...
详细信息
The authors describe the hardware and software of a system for prototyping digital-signal-processing applications by using commercially available digital-signal processors linked to form multiprocessors. The graphical programming environment makes it easier to program, compile, debug, and test DSP algorithms. The system reduces the cost of application prototyping, making it a feasible step at early design stages. To demonstrate the advantages of their approach, the authors explain how they prototyped a digital audio broadcast system. The complexities encountered highlight the limitations of the system.
The CHI project that extended from 1978 to mid-1984 under the leadership of C. Green of Systems Control Technology and Kestrel Institute is summarized. In order to conduct research on knowledge-based software enviro...
详细信息
The CHI project that extended from 1978 to mid-1984 under the leadership of C. Green of Systems Control Technology and Kestrel Institute is summarized. In order to conduct research on knowledge-based software environments, key portions of a prototype environment called CHI were constructed that established the feasibility of the approach. This research led to the development of a wide-spectrum language that could be used to express all stages of the program development process in the system. Another result was the prototype compiler's ability to synthesize itself from a very high-level description of itself. The overall nature of the work done on this project is described, highlights of implemented prototypes are given, and the implications of this work for the future of software engineering are discussed. Current research projects at Kestrel Institute and commercial applications of the technology at Reasoning Systems are briefly surveyed.
This paper describes the implementation of a model lift control system, based on a formal specification of lift behaviour. The purpose of the paper is to demonstrate the benefit of using formal specifications as the b...
详细信息
This paper describes the implementation of a model lift control system, based on a formal specification of lift behaviour. The purpose of the paper is to demonstrate the benefit of using formal specifications as the basis of an implementation, and to show how a control system can be produced using an integrated project support environment.
Cryptic and ambiguous error messages provided by programming environments are crucial barriers to beginners when learning to program. This study designed a coding manual to explain common Python programming errors to ...
详细信息
Cryptic and ambiguous error messages provided by programming environments are crucial barriers to beginners when learning to program. This study designed a coding manual to explain common Python programming errors to students using a data-driven approach, following guidelines suggested by prior studies. A quasi-experiment with two groups of middle school students was conducted to examine the effectiveness of the coding manual in reducing student errors, increasing confidence, and promoting learning performance. By analyzing 6015 erroneous student programs collected by the automated assessment tool (AAT) Mulberry, we found that the experimental group who used the coding manual during learning did not make fewer language specification errors (LSEs) in general. However, for LSEs indicating the actual errors in the program, the coding manual showed significant effects in reducing error frequencies. We also found that the coding manual failed to increase students' confidence in programming and promote learning performance. Possible causes of the ineffectiveness may include high cognitive loads during programming, the productivity of learning from the debugging process, and the incompleteness of the explanations and examples in the coding manual. We recommend that computer programming instructors use AATs or similar tools to collect learning data and identify students' common errors, directly explain identified common LSEs in class, and explicitly teach debugging methods and strategies. Future research should focus on students' self-regulation during programming, better methods of explaining common errors to novices, and the long-term effects of using a coding manual on students' learning in introductory programming.
暂无评论