Age | Commit message (Collapse) | Author |
|
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
|
|
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
|
|
also, cleanup comments for gem5.fast compilation
|
|
dont treat read() and write() fields as mut. exclusive
|
|
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
|
|
define separate priority resource pool squash and graduate events
|
|
|
|
this causes forwarding a bad value register value
|
|
|
|
|
|
use it in reg. dep. tracking
|
|
dont use offset to calculate this but rather an enum
that can be updated
|
|
|
|
|
|
implement a clean interface to handle branch misprediction and eventually all pipeline
flushing
|
|
valgrind complains and its a potential source of instability, so go ahead
and set it to 0 to start
|
|
The DynInst was not performing the host-to-guest translation
which ended up breaking stores for SPARC
|
|
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.
|
|
|
|
add find and end functions for inst. schedules
that can search by stage number
|
|
keep stats for int/float reg file usage instead
of aggregating across reg file types
|
|
make handling of speculative and nonspeculative insts
more explicit
|
|
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.
|
|
provide a sanity check for someone coding
a new architecture
|
|
call trap function when a fault is received
|
|
ignore writes to the ISA zero register
|
|
|
|
get rid of accessing iterators (for instructions) by reference
|
|
|
|
clean up control flow to make it easier to understand
|
|
|
|
- also use "threadId()" instead of readTid() everywhere
- this will help support more complex ISA indexing
|
|
|
|
since we dont care about if the cache of instruction schedules is sorted or not,
then the hash map should be faster
|
|
|
|
|
|
After a checkpoint we need to make sure that we restore the right
number of entries.
|
|
Instead of clearing the entire TLB on initialization and flush, the code was
clearing only one element. This patch corrects the memsets in the init and
flush routines.
|
|
The code for Set class was written under the assumption that
std::numeric_limits<long>::digits returns the number of bits used for
data type long, which was presumed to be either 32 or 64. But return value
is actually one less, that is, it is either 31 or 63. The value is now
being incremented by 1 so as to correctly set it.
|
|
If there's a problem when reading the section names from a supposed ELF file,
this change makes gem5 print an error message as returned by libelf and die.
Previously these sorts of errors would make gem5 segfault when it tried to
access the section name through a NULL pointer.
|
|
This change makes some minor changes to get the error management code in
libelf to build on Linux and to build it into the library.
|
|
|
|
|
|
|
|
this flag is only used for early branch resolution in the O3 model (of pc-relative branches)
but this isnt cleanly working even when the branch target code is added for sparc. For now,
we'll ignore this optimization and add a todo in the SPARC ISA for future developers
|
|
|
|
use stats file generated by zizzer
|
|
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
|
|
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. get and set functions for access permissions have been added to the
Controller state machine. The changePermission() function provided by the
AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.
NOTE: Each protocol will have to define these get and set functions in order
to compile successfully.
|
|
|