I -
Using AltaVista
scanning for DLX
found
http://marvin.ee.cornell.edu:8080/~reeves/ee308/lab10/lab10dir/ ...
... htm/node1.html#SECTION00001000000000000000
(yes, it is that long!)
invovles academic work on a DLX simulator (source in C)
up the tree found
http://marvin.ee.cornell.edu:8080/~reeves/ee308/
a reference to
"The GNU DLX Cross Compiler (DCC)" documentation and (PS/PDF) on
the DLX environment and floating point Architecture
(This page contains an e-mail link to html page author, who may
be able point you to a relevant ftp site).
If this site does not give you clear enough back track to
GNU ftp's, post again for GNU guidance, or post in GNU
help newsgroups. There are a number of GNU ftp sites world wide,
if you do not know that already. It can save you time if you can
get a hint from someone who knows a site that has DLX compiler, and
the current image.
You may also want to note the specific OS you will use for your
compilations in further posts to invite comments from those who
have deployed the DLX C compiler in that exact situation.
II -
also found
http://www.cs.nthu.edu.tw/~dr838312/architecture/TermProj/report.html
with mention of dlxcc and dlxsim,
again this appears to be a Sun environment.
(the page has a potentially useful e-mail address for you).
troling around I found a brief description at
http://www.cs.nthu.edu.tw/~dr838312/architecture/hw2/dlx.html
directory dates suggest that the particular material hit is more than
12 months old, but if you can establish contact they may guide you to
downloadables with recent images.
III -
you may also wish to visit
http://everest.ee.umn.edu/mcerg/gcc-dlx.html
where it appears that GCC is being used for DLX cross compiles
(as opposed to DCC).
IV -
this is off topic a bit, but some lurkers interested in DLX may find
http://yara.ecn.purdue.edu/~teamaaa/dlxview/
interesting. dlxview is apparently a visualizer. It involves
Tcl and Tk so could absorb time if you are not set up yet for that ...
however the e-mail contact may be able to point to downloadable DLX
compilers at Purdue.
Best Wishes
Robert Rayhawk
RKRa...@aol.com
Generally, you can probably find a way to generate GCC in an older simpler
fashion with a DLX back end, or GCC in a new fashion (more complex because of
C++ embellishments) with the DLX format.
There are a few references to commercial sites here (I have tried to note that
well enough so you can avoid them if you want).
As you will be able to see I can not quite resolve a location for DLX
attachments to GCC 2.8.x. Help is solicited for that. I will continue to try
to resolve the "dcc" thing I mention previously. If it is real, it may be a
distinct compiler.
==========================
using http://archie.switch.ch searched for "DLX" found
ftp://sunsite.doc.ic.ac.uk/ic.doc/ALA/papers/P.Kelly/ParallelArchitecture
s94-CourseMaterials/HennessyAndPattersonSoftware/dlx/README
some entries 1992
apparently GNU C version 1.37
dlxcc (based upon GNU GCC)
dlxsim
binaries available
note instruction
Go into this directory, and do the following:
% config.gcc dlx
% make
(but I find no string dlx in GNU GCC 2.8.1 down loaded from MIT 9/26/98)
This site may still be of interest to anyone wanting to use a simpler GCC of
old.
Note particularly
ftp://sunsite.doc.ic.ac.uk/ic.doc/ALA/papers/P.Kelly/ParallelArchitectures
94-CourseMaterials/HennessyAndPattersonSoftware/dlx/gcc/dlxcc.gz
A higher level README file indicates
""
* dlx
This directory contains two things: a C compiler for DLX, and a
simulator for DLX. Have a look in the file dlx/daxpy.c for an
example of how this software is used.
See also dlx/man/dlxcc.catman for further info on dlxcc. The
documentation for dlxsim is in dlx/man/manual.dvi; to read this do the
following on an X terminal:
xdvi dlx/man/manual.dvi
""
The sample program daxpy.c is C code not just inline assemler.
===========================
also full file presentation of
ftp://sunsite.doc.ic.ac.uk/ic.doc/ALA/papers/P.Kelly/ParallelArchitecture
s94-CourseMaterials/HennessyAndPattersonSoftware/dlx/man/dlxcc.1.gz
seems to point back to Berkeley and at
ftp://sunsite.doc.ic.ac.uk/ic.doc/ALA/papers/P.Kelly/ParallelArchitecture
s94-CourseMaterials/HennessyAndPattersonSoftware/dlx/man/dlxcc.catman.gz
there is a bin/ directory, but not yet clear what the target
machine was. (files in the gcc/ source directory indicate
NS32K, ALTOS, i86 and/or MIPS *.h files, ... but up the tree this
appears to be a Sunsite). So if the source is viable at all for you,
you may need to regen GCC for your platform.
===========================
thru http://archie.switch.ch found
ftp://ftp.unina.it/pub/Unix/pkgs/emulator/dlx/README.me
DLX 1991 possibly VAX
===========================
thru http://archie.switch.ch found
ftp://ftp.cc.gatech.edu/pub/people/annc/cs4760/dlx/
using older GCC again
================
I have received references to
Their GNUPro package is not free, so this is not exactly responsive to the
original poster's request.
However the package may relate to some institutional interests.
I have not yet learned if the package has been or can be configured to DLX.
================
GNU inquiries almost always lead back to
this site is mirrored around the world, for example at
ftp.wustl.edu
ftp.uu.net
gatekeeper.dec.com
ftp.funet.fi
which sites may perform better depending upon the time at which and
continent from which you telecommunicate
================
I personally down loaded a GCC 2.8.x tar file and expanded it.
Interestingly I find no occurrence of the string 'dlx' in the expanded
material. I must be missing something.
The standard GCC (atleast the most recent one) may not have the DLX back-end
capability.
>From notes at other sites I have become aware that the dlxcc variation includes
these files:
config-dlx.h
tm-dlx.h
dlx.md
output-dlx.c
va-dlx._h
================
An excellent location for those interesting in DLX is
http://www.mkp.com/books_catalog/ca/hp2e_res.htm
mkp is Morgan Kaufmann Publishers, Inc.
publishers of "Computer Architecture: A Quantitative Approach,
Second Edition," by David A. Patterson and John L. Hennessy
This book is basically the origin of the conceptual DLX and the DLX
floating-point extension.
(I am not that steep in this literature, knowledgable viewers are welcome to
correct that synopsis as necessary.)
The cited page has many excellent links!
(Again, as a courtesy to the original poster, and those interested only in free
material, permit me to mention that the mkp site and many of the
sites pointed to by the linked university pages, are commercial in
orientation).
There is plenty of DLX material here, for example, from here you can find
a gccdlx made with GNU C 2.7.x at University of Minnesota
http://www-mount.ee.umn.edu/mcerg/gcc-dlx.html
I have not chased that link yet, It may well be the best to look to for use of
the most recent GCC.
Also of more general reference is a link from the mkp page to
http://www.cs.wisc.edu/~arch/www
this is for the architecture geeks, it is the the Computer Architecture Page at
the University of Wisconsin.
Oodles of fun stuff there.
================
Addendum on DLX
For those doing further searching on DLX please note that on the net
the search argument "dlx" is likely to find
DLX for P&H, and GNU
DLX of Linux distribution
DLX a substring in a name for components
in MS/Encarta product
IT is hard to filters these out, so you have to patiently view
the results.
I have one reference to a "dcc" which may be a DLX C compiler.
I have not yet resolved this. The argument "dcc" can prompt search engines to
return refrences to certain decompiler work at academic institutions, which
also has to be patiently by-passed.
I - dcc is GNU GCC
First, a follow up note on a previously mentioned compiler tentatively
known as dcc. It is not distinct from GNU GCC. All free compilers
found are GNU GCC variations with DLX targetting. At
http://marvin.ee.cornell.edu:8080/~reeves/ee308/
you can find your way to information on
scc - A compiler for Sun Workstations
hcc - A compiler for Hewlett Packard Workstations
mcc - A cross compiler for the MC68000
dcc - A cross compiler for the DLX (apparently Sun executable)
All of these are GNU GCC compilers. The DLX compiler(dcc), I think, is
actually for Sun environments. These are not ftp sites by the
way. Any observer of these notes who knows how to get to Cornell sites
that have downloadables for DLX GCC are welcome to note them for this
thread.
The cited Cornell page is excellent, by the way. You can get an
education from here. There is a "C Language Tutorial," for
example. The site is very easy to use.
===================
II - a 2.7 GCC DLX
There is plenty of DLX material at
http://www-mount.ee.umn.edu/mcerg/gcc-dlx.html
for example, from here you can find a gccdlx made with GNU C 2.7.x at
the University of Minnesota
It may well be the best to look to for use of the most recent GCC.
The hypertext will take you to
ftp://ftp-mount.ee.umn.edu/pub/projects/sawdey/dlx_gcc_md.tar
This is a symbolic link to the most recent of four deployments
(directory dates range from 1/96 thru 2/97).
This good work by Dr. Aaron Sawdey, and others, at UMN is thorough.
IMPORTANTLY, they also note a GNU C library version 1.09 compiled for
DLX. That probably creates an entirely different foundation for DLX
code generation and simulation. Clearly program linkage would be an
issue for researchers. Examiniation of such an area could not be
complete without a review of the putative machine behavior for the
standard lib function invocation.
The web page indicates they have regenned even stdio. (Iterested
parties should look for the libs themselves on this site, regenning
yourself will take considerable time).
This solution permits moving a large class of existing programs into a
DLX research environment. Researchers would not have to code with kid
gloves when using this environment.
The knowledgable author of this material states that the DLX
components have not yet been added to GCC 2.8.x. He encourages that
action.
=================
III - Another direct hit.
Another GCC DLC compiler can be found at
ftp://ftp-acaps.cs.mcgill.ca/pub/software/
This is McGill University, School of Computer Science, Montreal Quebec,
Canada
Directory Dates include 1993, 1994 1996, so this too is fairly recent.
It appears to be a SPARC environment. Interesing items are
superdlx-1.0
Superdlx superscalar DLX simulator. Object code for SPARC.
dlxcc-2.0
GCC C compiler for DLX. Requires GCC 2.x to compile.
dlxsim
DLX Simulator, modified version of the original one.
Some bugs have been fixed in this version.
The download contains the five distinguishing files
config-dlx.h
tm-dlx.h
dlx.md
output-dlx.c
va-dlx.h\fP
This is recent work.
It has no apparent reengineering of C libs.
Has varieties of super DLX simulator.
Site may represent an easier solution for some who are only interested in
using C syntax to generate DLX code for analysis.
This appears to be a further development of work done on GCC 1.x versions.
This is GCC 2.x work.
Robert Rayhawk
RKRa...@aol.com
: There is plenty of DLX material at
:
: http://www-mount.ee.umn.edu/mcerg/gcc-dlx.html
:
: for example, from here you can find a gccdlx made with GNU C 2.7.x
: at the University of Minnesota
We've been having some problems with our web server lately,
which hopefully is fixed now. If anyone failed to load this
page, please try again.
: It may well be the best to look to for use of the most recent GCC.
[snip]
: This good work by Dr. Aaron Sawdey, and others, at UMN is thorough.
:
: IMPORTANTLY, they also note a GNU C library version 1.09 compiled for
: DLX. That probably creates an entirely different foundation for DLX
: code generation and simulation. Clearly program linkage would be an
: issue for researchers. Examiniation of such an area could not be
: complete without a review of the putative machine behavior for the
: standard lib function invocation.
:
: The web page indicates they have regenned even stdio. (Iterested
: parties should look for the libs themselves on this site, regenning
: yourself will take considerable time).
:
: This solution permits moving a large class of existing programs into a
: DLX research environment. Researchers would not have to code with kid
: gloves when using this environment.
I should note that the assembly code generated by gcc-dlx will
*not* run on the "dlxsim" simulator that was distributed with H&P.
The main reason is we changed the stack pointer register as well
as adding a few extra instructions and assembler directives.
This isn't a real loss since dlxsim isn't really usable for anything
other than small (ie, short execution run time) benchmarks.
These assembly files *will* run on a simulator we built from the
ground up here at Minnesota called "fast-dlx". Fast stands for
Flexible Architecture Simulator Tool. This can be downloaded from:
http://www-mount.ee.umn.edu/mcerg/fast-dlx/
We've compiled and run the simulator on SunOS 4.x, IRIX and Linux.
Some of the benefits of fast-dlx over dlxsim are:
* Faster execution time compared to dlxsim. Depending on the host
machine, we've experienced anywhere between 5K-10K instructions
executed per second with dlxsim. Using fast-dlx, this ranges
from 150K-5M instructions executed per second.
The large variance with fast-dlx is due to our simulation
methodology. Fast-dlx consists of two simulators. An ISA
simulator which executes our program and a separate timing
simulator. The ISA simulator executes our program and is
responsible for computing our "answer" as well as keeping
track of instruction counts. Is also can conditionally
generate an instruction trace file which can be fed to
the timing simulator. The nice benefit of this is that
you don't have to pay the penalty of generating cycle time
information if you don't want it. With dlxsim, you get
cycle time information whether you want it or not.
We've also strived to make the common case fast within
the simulator. In dlxsim, they have lots of code that
says: Is this instruction address an address the user
has placed a break point at?, Did they overwrite r0?,
Is there a full moon? We've removed all of these types
of checks by adding an extra instruction opcode that is
only available for use by the simulator. For example,
if we want to set a break point in the simulator, instead
of checking each instruction address we encounter, we
replace the instruction at the address we want the break
point with our new instruction; the new instruction
contains an index into a table which holds the original
instruction plus some other information. At run time,
if we end up trying to execute that instruction, we'll
branch to special case code within the simulator which
will bring us back to our debugger prompt. We use these
new instructions for handling break points, writes to r0
(which is hard coded to zero in DLX), instruction count
statistics (we keep block counters and compute instruction
counts from them after simulation is done),...
* We support the simulation of muliproccessor programs via:
fork(), join(), barrier(bar_num,num_bars) and shared memory.
An interesting point with respect to our execution of fork()
versus some other simulators is that when we encounter a
fork() call, we actually fork off another simulator process.
With our fixed up version of dlxsim, simulating explicitly
parallel programs generally leads to a simulation time slowdown
equal to the number of processes we're trying to simulate.
With fast-dlx, we've actually seen near linear decreases in
simulation time (we were running on a MP machine).
* As Robert pointed out, we have the GNU C library prebuilt.
This grew out of our frustration with the way that dlxsim
executed such functions as printf, fprintf, fopen, fclose, ...
The dlxsim solution was to create a "printf" trap instruction
which would be caught by the simulator. The simulator would
then perform the printf by decoding the format string and...
Ugh, you get the point. Anyway, you needed one of these hacks
for each library function you wanted. We decided the easiest
solution (in the long run!) was to compile up the GNU C library
and only support the lowest level library calls such as open,
close, read, write, isatty, access,... This made porting new
applications extremely easy.
An interesting side effect occurred while we were using the new
GNU C library. One of our code monkeys... err, ... I mean
undergraduate programmers found that the instruction counts
for several programs were changing for no apparent reason.
We finally tracked it down to the simulated GNU C library
was detecting when he was redirecting stdout and it switched
to block buffering which made us execute different code in
the printf library function!
: Clearly program linkage would be an issue for researchers.
Fast-dlx comes with an integrated assembler/linker/loader.
Anyone interested can contact us at gcc...@mountains.ee.umn.edu
[aka Aaron Sawdey, who's currently working at Cray now] and
fast...@mountains.ee.umn.edu [aka me, I'm at IBM]. The source
is available, so everyone is welcome to hack it to their hearts
content. I will note, that we and others have had difficulty
getting the timing simulator to compile/run on Solaris!?!?
The problem has to do with the changes made to semaphore
usage on Solaris. I'll also note that Aaron and I have full
time jobs, so I can't guarantee we'll be able to spend much
time debugging problems that you encounter. Speaking only for
myself, I'll at least try helping.
I'll also note we have a fast-mips version which can read
ELF binaries directly. This is essentially the same simulator,
except that it is targeted to execute MIPS IV binaries.
It has it's own web page:
http://www-mount.ee.umn.edu/mcerg/fast-mips/
--
Peter
------------------------------------------------------------------------------
Peter Bergner | Peter Bergner
SLIC Optimizing Translator Development | Dept. of Electrical Engineering
IBM Rochester, MN | University of Minnesota
ber...@vnet.ibm.com | ber...@lcse.umn.edu
| www-mount.ee.umn.edu/~bergner