Strum: Structured Microprogram Development System for Correct Firmware

An approach to the development of correct microprograms is to use the methodologies that have been beneficial in the generation of correct user programs, i. e., structured programming, high-level languages (HLL's), and formal program verification using Floyd's inductive assertion method. This paper presents a system that combines these techniques to simplify the design and implementation of correct microprograms for a real microprogrammable computer. It gives some statistics which support our emphasis on generation as well as correctness and some preliminary results on the use of our system.

[1]  George B. Leeman Some Problems in Certifying Microprograms , 1975, IEEE Transactions on Computers.

[2]  Niklaus Wirth,et al.  EULER: A generalization of ALGOL and its formal definition: Part 1 , 1966, Commun. ACM.

[3]  K. J. Biba,et al.  Structured specification of a Security Kernel , 1975, Reliable Software.

[4]  Larry Calvin Ragland,et al.  A verified program-verifier. , 1973 .

[5]  Bengt Malm,et al.  A flexible asynchronous microprocessor , 1973 .

[6]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[7]  David J. DeWitt A Control Word Model for detecting conflicts between microprograms , 1975, MICRO 8.

[8]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[9]  Anthony C. Hearn,et al.  REDUCE 2: A system and language for algebraic manipulation , 1971, SYMSAC '71.

[10]  S. G. Tucker Microprogram Control for System/360 , 1967, IBM Syst. J..

[11]  Howard Falk Computer hardware/software: Hardware: Microprocessors and memories marry software: Modular programs and “kernels” arrive , 1974, IEEE Spectrum.

[12]  Earl W. Reigel,et al.  The interpreter: a microprogrammable building block system , 1971, AFIPS '72 (Spring).

[13]  Helmut Weber A microprogrammed implementation of EULER on IBM system/360 model 30 , 1967, CACM.

[14]  Richard H. Eckhouse A high-level microprogramming language (MPL) , 1971, AFIPS '71 (Spring).

[15]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[16]  M. Tsuchiya,et al.  An algorithm for control memory minimization , 1975, MICRO 8.

[17]  Niklaus Wirth,et al.  PL360, a Programming Language for the 360 Computers , 1968, JACM.

[18]  Ward Douglas Maurer Some correctness principles for machine language programs and microprograms , 1974, MICRO 7.

[19]  C. V. Ramamoorthy,et al.  Optimization Strategies for Microprograms , 1971, IEEE Transactions on Computers.

[20]  Vernon Coleman,et al.  A versatile microprogram sequencer , 1975, MICRO 8.

[21]  F. T. Baker,et al.  Chief Programmer Team Management of Production Programming , 1972, IBM Syst. J..

[22]  Alexander Birman On Proving Correctness of Microprograms , 1974, IBM J. Res. Dev..

[23]  Niklaus Wirth,et al.  EULER: a generalization of ALGOL, and its formal definition: Part II , 1965, CACM.

[24]  Clive Ghest A powerful microprogram control unit - the 6700 , 1975, MICRO 8.

[25]  Masahiro Tsuchiya,et al.  An approach to optimization of horizontal microprograms , 1974, MICRO 7.

[26]  J. Strother Moore,et al.  Introducing iteration into the Pure Lisp theorem prover , 1975, IEEE Transactions on Software Engineering.

[27]  Ralph L. London,et al.  The current state of proving programs correct , 1972, ACM Annual Conference.

[28]  Gerald J. Popek,et al.  Verifiable secure operating system software , 1974, AFIPS '74.

[29]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[30]  Peter Wegner,et al.  The Vienna Definition Language , 1972, CSUR.

[31]  W. W. Bledsoe,et al.  A Man-Machine Theorem-Proving System , 1973, IJCAI.

[32]  C. V. Ramamoorthy,et al.  Correctness and equivalence of straight line microprograms , 1973, MICRO 6.

[33]  Donald I. Good,et al.  An interactive program verification system , 1975 .

[34]  John R. Mick Am2900 Bipolar Microprocessor family , 1975, MICRO 8.