Korey Sewell
561c33f082
inorder: dont handle multiple faults on same cycle
...
if a faulting instruction reaches an execution unit,
then ignore it and pass it through the pipeline.
Once we recognize the fault in the graduation unit,
dont allow a second fault to creep in on the same cycle.
2011-06-19 21:43:40 -04:00
Korey Sewell
c4deabfb97
inorder: register ports for FS mode
...
handle "snoop" port registration as well as functional
port setup for FS mode
2011-06-19 21:43:40 -04:00
Korey Sewell
f1c3691356
inorder: check for interrupts each tick
...
use a dummy instruction to facilitate the squash after
the interrupts trap
2011-06-19 21:43:40 -04:00
Korey Sewell
0bfdf342da
inorder: explicit fault check
...
Before graduating an instruction, explicitly check fault
by making the fault check it's own separate command
that can be put on an instruction schedule.
2011-06-19 21:43:40 -04:00
Korey Sewell
5f608dd2e9
inorder: squash and trap behind a tlb fault
2011-06-19 21:43:39 -04:00
Korey Sewell
e0e387c2a9
inorder: stall stores on store conditionals & compare/swaps
2011-06-19 21:43:39 -04:00
Korey Sewell
e8b7df072b
inorder: make InOrder CPU FS compilable/visible
...
make syscall a SE mode only functionality
copy over basic FS functions (hwrei) to make FS compile
2011-06-19 21:43:39 -04:00
Korey Sewell
d71b95d84d
inorder: remove memdep tracking for default pipeline
...
speculative load/store pipelines can reenable this
2011-06-19 21:43:39 -04:00
Korey Sewell
b72bdcf4f8
inorder: fetchBuffer tracking
...
calculate blocks in use for the fetch buffer to figure out how many total blocks
are pending
2011-06-19 21:43:39 -04:00
Korey Sewell
4d4c7d79d0
inorder: redefine DynInst FP result type
...
Sharing the FP value w/the integer values was giving inconsistent results esp. when
their is a 32-bit integer register matched w/a 64-bit float value
2011-06-19 21:43:38 -04:00
Korey Sewell
db8b1e4b78
inorder: treat SE mode syscalls as a trapping instruction
...
define a syscallContext to schedule the syscall and then use syscall() to actually perform the action
2011-06-19 21:43:38 -04:00
Korey Sewell
c95fe261ab
inorder: bug in mdu
...
segfault was caused by squashed multiply thats in the process of an event.
use isProcessing flag to handle this and cleanup the MDU code
2011-06-19 21:43:38 -04:00
Korey Sewell
4c979f9325
inorder: optionally track faulting instructions
2011-06-19 21:43:38 -04:00
Korey Sewell
22ba1718c4
inorder: cleanup events in resource pool
...
remove events in the resource pool that can be called from the CPU event, since the CPU
event is scheduled at the same time at the resource pool event.
----
Also, match the resPool event function names to the cpu event function names
----
2011-06-19 21:43:38 -04:00
Korey Sewell
e8082a28c8
inorder: don't stall after stores
...
once a ST is sent off, it's OK to keep processing, however it's a little more
complicated to handle the packet acknowledging the store is completed
2011-06-19 21:43:38 -04:00
Korey Sewell
379c23199e
inorder: don't stall after stores
...
once a ST is sent off, it's OK to keep processing, however it's a little more
complicated to handle the packet acknowledging the store is completed
2011-06-19 21:43:37 -04:00
Korey Sewell
4c9ad53cc5
inorder: remove decode squash
...
also, cleanup comments for gem5.fast compilation
2011-06-19 21:43:37 -04:00
Korey Sewell
a444133e73
inorder: support for compare and swap insts
...
dont treat read() and write() fields as mut. exclusive
2011-06-19 21:43:37 -04:00
Korey Sewell
89d0f95bf0
inorder: branch predictor update
...
only update BTB on a taken branch and update branch predictor w/pcstate from instruction
---
only pay attention to branch predictor updates if the the inst. is in fact a branch
2011-06-19 21:43:37 -04:00
Korey Sewell
479195d4cf
inorder: priority for grad/squash events
...
define separate priority resource pool squash and graduate events
2011-06-19 21:43:37 -04:00
Korey Sewell
71018f5e8b
inorder: remove stalls on trap squash
2011-06-19 21:43:37 -04:00
Korey Sewell
34b2500f09
inorder: no dep. tracking for zero reg
...
this causes forwarding a bad value register value
2011-06-19 21:43:37 -04:00
Korey Sewell
d02fa0f6b6
imported patch recoverPCfromTrap
2011-06-19 21:43:37 -04:00
Korey Sewell
264e8178ff
imported patch squash_from_next_stage
2011-06-19 21:43:36 -04:00
Korey Sewell
f0f33ae2b9
inorder: add flatDestReg member to dyninst
...
use it in reg. dep. tracking
2011-06-19 21:43:36 -04:00
Korey Sewell
555bd4d842
inorder: update event priorities
...
dont use offset to calculate this but rather an enum
that can be updated
2011-06-19 21:43:36 -04:00
Korey Sewell
7dea79535c
inorder: implement trap handling
2011-06-19 21:43:36 -04:00
Korey Sewell
061b369d28
inorder: cleanup intercomm. structs/squash info
2011-06-19 21:43:35 -04:00
Korey Sewell
b195da9345
inorder: use setupSquash for misspeculation
...
implement a clean interface to handle branch misprediction and eventually all pipeline
flushing
2011-06-19 21:43:35 -04:00
Korey Sewell
73cfab8b23
inorder: DynInst handling of stores for big-endian ISAs
...
The DynInst was not performing the host-to-guest translation
which ended up breaking stores for SPARC
2011-06-19 21:43:35 -04:00
Korey Sewell
4f34bc8b7b
inorder: make marking of dest. regs an explicit request
...
formerly, this was implicit when you accessed the execution unit
or the use-def unit but it's better that this just be something
that a user can specify.
2011-06-19 21:43:35 -04:00
Korey Sewell
946b0ed4f4
inorder: simplify handling of split accesses
2011-06-19 21:43:35 -04:00
Korey Sewell
1a6d25dc47
inorder: addtl functionaly for inst. skeds
...
add find and end functions for inst. schedules
that can search by stage number
2011-06-19 21:43:35 -04:00
Korey Sewell
8b54858831
inorder: register file stats
...
keep stats for int/float reg file usage instead
of aggregating across reg file types
2011-06-19 21:43:34 -04:00
Korey Sewell
085f30ff9c
inorder: scheduling for nonspec insts
...
make handling of speculative and nonspeculative insts
more explicit
2011-06-19 21:43:34 -04:00
Korey Sewell
3c417ea23a
inorder: find register dependencies "lazily"
...
Architectures like SPARC need to read the window pointer
in order to figure out it's register dependence. However,
this may not get updated until after an instruction gets
executed, so now we lazily detect the register dependence
in the EXE stage (execution unit or use_def). This
makes sure we get the mapping after the most current change.
2011-06-19 21:43:34 -04:00
Korey Sewell
bd67ee9852
inorder: assert on macro-ops
...
provide a sanity check for someone coding
a new architecture
2011-06-19 21:43:34 -04:00
Korey Sewell
ee7062d94d
inorder: handle faults at writeback stage
...
call trap function when a fault is received
2011-06-19 21:43:34 -04:00
Korey Sewell
17f5749dbb
inorder: ISA-zero reg handling
...
ignore writes to the ISA zero register
2011-06-19 21:43:34 -04:00
Korey Sewell
2a59fcfbe9
inorder: update support for branch delay slots
2011-06-19 21:43:34 -04:00
Korey Sewell
d4b4ef1324
inorder: inst. iterator cleanup
...
get rid of accessing iterators (for instructions) by reference
2011-06-19 21:43:34 -04:00
Korey Sewell
e2f9266dbf
inorder: update bpred code
...
clean up control flow to make it easier to understand
2011-06-19 21:43:33 -04:00
Korey Sewell
6df6365095
inorder: add types for dependency checks
2011-06-19 21:43:33 -04:00
Korey Sewell
19e3eb2915
inorder: use flattenIdx for reg indexing
...
- also use "threadId()" instead of readTid() everywhere
- this will help support more complex ISA indexing
2011-06-19 21:43:33 -04:00
Korey Sewell
76c60c5f93
inorder: use m5_hash_map for skedCache
...
since we dont care about if the cache of instruction schedules is sorted or not,
then the hash map should be faster
2011-06-19 21:43:33 -04:00
Korey Sewell
1a451cd2c5
sparc: compilation fixes for inorder
...
Add a few constants and functions that the InOrder model wants for SPARC.
* * *
sparc: add eaComp function
InOrder separates the address generation from the actual access so give
Sparc that functionality
* * *
sparc: add control flags for branches
branch predictors and other cpu model functions need to know specific information
about branches, so add the necessary flags here
2011-06-09 01:34:06 -04:00
Gabe Black
a59a143a25
gcc 4.0: Add some virtual destructors to make gcc 4.0 happy.
2011-06-07 00:24:49 -07:00
Nathan Binkert
2b1aa35e20
scons: rename TraceFlags to DebugFlags
2011-06-02 17:36:21 -07:00
Nathan Binkert
9c4c1419a7
work around gcc 4.5 warning
2011-05-09 16:34:11 -04:00
Nathan Binkert
63371c8664
stats: rename stats so they can be used as python expressions
2011-04-19 18:45:21 -07:00