[patch][rfa] CGEN Model Support for SID

Dave Brolley brolley@redhat.com
Mon Mar 31 21:30:00 GMT 2003


Hi,

This submission cleans up the partially adapted support for CGEN models 
for SID and enables it. Attached are patches for CGEN and SID which 
accomplish this:

o sid-model.patch.txt's: Patches for CGEN and SID
o cgen-model.h: New class definition in sid/component/cgen-cpu
o *.ChangeLog: ChangeLogs for the above

Also attached are examples of the generated code and suggested usage for 
the xstormy16:

o xstormy16-model.{cxx,h}: CGEN-generated model code
o xstormy16-model-gen.patch.txt: Additional code generated into 
xstormy16-decode.h and xstormy16-sem.cxx
o xstormy16-model.patch.txt: Patch showing suggest usage of the 
generated code by a SID cgen-cpu.

Notes:

o The implementation is similar to the existing implementation for 
sim/common simulators except:
  - The generated functions are encapsulated into a class: 
<prefix>_<model>_model
  - Functions are generated for modelling each insn both before and 
after execution. The sim/common implementation only generated a function 
to be called after execution, however, there was a need for modelling 
both before and after in the implementaion of the FRV simulator which 
was handled somewhat awkwardly. Therefore I added this capability for 
this implementation.
  - As in the existing sim/common implementation, there are hooks 
provided (at the cgen-model level) for modelling  before and after 
groups of parallel insns.

A general outline of the design follows:

o A new class, cgen-model, has been defined in 
sid/component/cgen-cpu/cgen-model.h. It provides the methods for 
modelling before and after groups of parallel insns with default virtual 
implementations and keeps a pointer to the cpu for reporting computed 
latencies.

o The script sid/component/cgen-cpu/CGEN.sh has been enhanced to process 
the option 'with-profile=fn' and to generate the files model.cxx and 
model.h.

o For each model (cgen model) used by a all machines (cgen mach) being 
generated, a class, @prefix@_@model@_model is generated in 
sid/component/cgen-cpu/@cpu@/@prefix@-model.{cxx,h}. These classes each 
inherit from cgen-cpu and implement the functions for modelling each 
unit before and after each insn. Default virtual implementations are 
provided as well as a table mapping each insn to its unit modelling 
functions and functions for indexing the table to make the calls.

o The generated code, as is, is complete and implements default latency 
computations as defined by the (timing ...) elements of each insn in the 
.cpu file.

o Since the default implementations are virtual, the programmer may 
inherit the generated class(es) to implement more complex modelling 
behavior for each unit of each model as needed.

o Calls to the modelling functions are inserted, as necessary, into the 
cpu's step_insns method. See xstormy16-model.patch.txt for an example.

This implementation has been tested on xstormy16 and an internal port 
which makes extensive use of this new work. Other ports are not affected 
since they do not make use of this functionality.

I am seeking comments leading toward approval to commit the general 
changes. I can also commit the xtormy16-specific code if folks think it 
would be of use as an example.

Dave
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-model.patch.txt
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-model.patch.txt
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment-0001.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: xstormy16-model.patch.txt
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment-0002.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: xstormy16-model-gen.patch.txt
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment-0003.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: xstormy16-model.h
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: xstormy16-model.cxx
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment.cxx>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cgen-model.h
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment-0001.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-model.ChangeLog
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: sid-model.ChangeLog
URL: <http://sourceware.org/pipermail/sid/attachments/20030331/fb2baffb/attachment-0001.ksh>


More information about the Sid mailing list