lodman@ncr-sd.UUCP (Mike Lodman) (10/30/86)
We are currently looking for a high level language that contains constructs which optimize jumps at the machine code level. We are also interested in modifying "C" to include such constructs. As an example, if (A>B) /*mostly*/ { } else { } or if (A>B) { } else /*mostly*/ { } with the /*mostly*/ indicating which flow the programmer thinks would occur more often. We may then optimize the code to use the various delayed and immediate jumps which the chip supports to get the best results most of the time, without going to the assembly level of programming. I would appreciate any help or suggestions on this subject. Michael Lodman Advanced Development and Systems Architecture NCR Corporation E&M San Diego (619) 485-3335 ARPA : ncr-sd!lodman@sdcsvax.edu CompuServe : 76367,1745
segall@caip.RUTGERS.EDU (Ed Segall) (11/03/86)
This sounds like trace scheduling, where the compiler uses information about the likelihood of the direction of branches to optimize use of pipelines, parallelism (e.g. in a microcoded machine), and perhaps other performance enhancers. John Fisher, who was at Yale until a couple years ago, wrote a trace scheduling compiler for VLIW machines (Very Long Instruction Word - i.e. parallel machines controlled with lots of bits, such as horizontally microprogrammed machines). He wrote a book on it called something like "Bulldog - a Trace Scheduling Compiler for VLIW Machines," which is published by MIT Press. There are also Yale technical reports on the work. I've also seen a reference to trace scheduling in VLSI design. I don't remember the book, but I'm almost certain that it is a Springer-Verlag monograph, and that it has an introduction Edsger Dijkstra (sp?). Or maybe the intro was by Hoare. Anyway, it was somebody famous for being very insistant about formality. I think it was Dijkstra, and I think the work was done in a Northern European country, which would fit. How's that for free association? Have fun, Ed Segall